gpt4 book ai didi

hadoop - 从 HDFS 导入数据到 HBase (cdh3u2)

转载 作者:可可西里 更新时间:2023-11-01 14:10:59 26 4
gpt4 key购买 nike

我已经安装了 hadoop 和 hbase cdh3u2。在 hadoop 中,我在路径 /home/file.txt 中有一个文件。它有这样的数据

one,1
two,2
three,3

我想将这个文件导入到 hbase 中。其中,第一个字段应解析为字符串,第二个字段应解析为整数,然后应将其插入 hbase。帮我做这个

a提前致谢....

最佳答案

我喜欢使用 Apache Pig 来摄取 HBase,因为它简单、直接且灵活。

这是一个 Pig 脚本,可以在您创建表和列族后为您完成这项工作。要创建表和列族,您需要:

$ hbase shell
> create 'mydata', 'mycf'

将文件移动到 HDFS:

$ hadoop fs -put /home/file.txt /user/surendhar/file.txt

然后,用HBaseStorage 编写pig 脚本来存储(您可能需要查看如何 set up and run Pig ):

A = LOAD 'file.txt' USING PigStorage(',') as (strdata:chararray, intdata:long);
STORE A INTO 'hbase://mydata'
USING org.apache.pig.backend.hadoop.hbase.HBaseStorage(
'mycf:intdata');

请注意,在上面的脚本中,键将是 strdata。如果您想从某些东西创建自己的 key ,请使用 FOREACH生成 key 的语句。 HBaseStorage 假定先前关系中的第一件事(在本例中为 A::strdata)是键。


其他一些选项是:

  • 写一个Java MapReduce做与上面相同的事情。
  • 使用 the client 直接与 HTable 交互并逐行放入。这应该只对小得多的文件完成。
  • 使用某种脚本(即 sed、perl、python)将数据通过 hbase shell 推送,将 csv 行转换为 shell put 命令。同样,只有在记录数量很少的情况下才应这样做。

    $ cat /home/file.txt | transform.pl
    put 'mydata', 'one', 'mycf:intdata', '1'
    put 'mydata', 'two', 'mycf:intdata', '2'
    put 'mydata', 'three', 'mycf:intdata', '3'

    $ cat /home/file.txt | transform.pl | hbase shell

关于hadoop - 从 HDFS 导入数据到 HBase (cdh3u2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8644261/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com