【问题标题】:How do I write hbase data to HDFS as text如何将 hbase 数据作为文本写入 HDFS
【发布时间】:2020-07-05 14:54:48
【问题描述】:

HBASE中已经有30万条当天的数据,如何将数据以TXT格式写入HBASE,每个TXT文件对应一天的数据,如: 2020.03.25/high.TXT(high为表名)

【问题讨论】:

    标签: hdfs hbase


    【解决方案1】:

    您可以使用 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_timestampend_timestamp 应该按照您的意愿定义(最后 1 天只需将它们设置为一天的开始和结束)。 注意它首先会在你的本地文件系统中生成high.txt,所以当你有足够的存储空间时使用它(或者high一天不包含太多数据)。

    【讨论】:

    • 我需要编写一个程序,将 hbase 数据自行导入 HDFS,而不是通过命令。 HBASE 中的数据是一天的数据,HBASE 中的数据已经过时间戳。 (我们把程序jar,上传到服务器,然后在服务器上运行,不能通过命令一路执行。)
    • 所有数据都在一个表中
    • 好的。你的问题并不清楚。看看凤凰(phoenix.apache.org)。您可以使用它在 hbase 上进行基于时间的查询。它有多种编程语言的 sdk。
    猜你喜欢
    • 1970-01-01
    • 2012-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多