如何将文件中的数据插入hbase表?

bjp0bcyl  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(383)

我做了一个例子,如下所示。

1 "aaaaa1" "bbbbb1" "ccccc1"
    2 "aaaaa2" "bbbbb2" "ccccc2"
    3 "aaaaa3" "bbbbb3" "ccccc3"
    .......

我想把这个数据插入hbase表,它由

(key int,subject string,predicate string,object string)
    (:key,cf1:val1,cf1:val2,cf1:val3)

我想在hbase shell上执行此插入操作。我该怎么做?

n3schb8v

n3schb8v1#

HBase shell 不是为这些目的而设计的,它只允许使用put命令逐行向hbase插入数据。
你可以用 importtsv 用于将文本数据直接导入hbase的工具。
假设您已经创建了hbase表 so_table 具有一个柱族 cf1 还有你的 example.nt 文件位于 /tmp/example/ hdfs目录。因此可以通过以下方式使用:

hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=HBASE_ROW_KEY,cf1:val1,cf1:val2,cf1:val3 so_table /tmp/example/

可能需要添加选项来更改列分隔符:

-Dimporttsv.separator=';'

此外,您应该了解,这种方法通过many put命令将数据直接插入hbase。还有另一种使用方法 importtsv 非常适合批量加载大量输入数据的工具。您可以生成storefiles,然后使用将其完全加载到hbase completebulkload 工具:

hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.bulk.output=/tmp/example_output -Dimporttsv.columns=HBASE_ROW_KEY,cf1:val1,cf1:val2,cf1:val3 so_table /tmp/example/
hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /tmp/example_output so_table

您可以阅读此工具的官方文档:https://hbase.apache.org/book.html#_importtsv

相关问题