【发布时间】:2020-07-05 14:54:48
【问题描述】:
HBASE中已经有30万条当天的数据,如何将数据以TXT格式写入HBASE,每个TXT文件对应一天的数据,如: 2020.03.25/high.TXT(high为表名)
【问题讨论】:
HBASE中已经有30万条当天的数据,如何将数据以TXT格式写入HBASE,每个TXT文件对应一天的数据,如: 2020.03.25/high.TXT(high为表名)
【问题讨论】:
您可以使用 HBase 附带的实用程序(使用 hbase 命令)将 HBase 导出到 HDFS:
hbase org.apache.hadoop.hbase.mapreduce.Export high /path/in/hdfs
这会将所有数据表导出到 HDFS 中的 csv 文件。因此,如果您将 hbase 数据定义为包含 1 天的数据(通过使用 ttl 属性),您将获得所需的结果。
如果您的 hbase 表包含以前的数据,那么您可以使用以下命令 exprt data by timestamp range:
echo "scan 'high',{ TIMERANGE => [start_timestamp, end_timestamp] }" | hbase shell | grep "^ " > high.txt
hdfs dfs -put high.txt /path/in/hdfs
start_timestamp 和 end_timestamp 应该按照您的意愿定义(最后 1 天只需将它们设置为一天的开始和结束)。
注意它首先会在你的本地文件系统中生成high.txt,所以当你有足够的存储空间时使用它(或者high一天不包含太多数据)。
【讨论】: