Hadoop 将数据从HDFS导入HBase(cdh3u2)

Hadoop 将数据从HDFS导入HBase(cdh3u2),hadoop,hbase,hdfs,cloudera,sqoop,Hadoop,Hbase,Hdfs,Cloudera,Sqoop,我已经安装了hadoop和hbase cdh3u2。在hadoop中,我在路径/home/file.txt处有一个文件。它的数据如下 one,1 two,2 three,3 我想将此文件导入hbase。在这种情况下,第一个字段应解析为字符串,第二个字段应解析为整数,然后将其推入hbase。帮我做这个 advance中的anks…我喜欢使用ApachePig来摄取HBase,因为它简单、直接、灵活 下面是一个Pig脚本,在创建表和列族之后,它将为您完成这项工作。要创建表和列族,请执行以下操作:

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

one,1
two,2
three,3
我想将此文件导入hbase。在这种情况下,第一个字段应解析为字符串,第二个字段应解析为整数,然后将其推入hbase。帮我做这个


advance中的anks…

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

下面是一个Pig脚本,在创建表和列族之后,它将为您完成这项工作。要创建表和列族,请执行以下操作:

$ hbase shell
> create 'mydata', 'mycf'
将文件移动到HDFS:

$ hadoop fs -put /home/file.txt /user/surendhar/file.txt
然后,编写要存储的pig脚本(您可能需要查找如何存储):

注意,在上面的脚本中,键将是
strdata
。如果要从某个内容创建自己的密钥,请使用语句生成密钥。hbastorage假定上一个关系中的第一件事(
A::strdata
,在本例中)是键


其他一些选择是:

  • 写一个作业来做与上面相同的事情
  • 直接与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
    

您希望您的钥匙是什么?你是把他们都推到一个单列家庭,还是两个独立的家庭?嘿,唐纳德。你能看看这个帖子吗?唐纳德,你是写这个答案的英雄!别忘了在该PIG脚本中注册所需的HBase jar。类似于“REGISTER/usr/lib/hbase/lib/*.jar;”@Donald我尝试过这个,但在我的hbase中,我只得到了1行,而在我的日志中,我得到的
851个文件被移动到hbase
。请帮帮我
$ 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