往HBase中导入csv文件的方法

        在实际的操作中涉及到将批量的数据插入到HBase中,这样的话如果直接一条一条的通过put来进行插入,就显得尤其吃力了,在这里记录下自己所用到的方法,因为网上的资源很多都是千篇一律,然后需要配合自己的来弄,记录下对自己比较有用,以及在使用的过程中需要注意的地方。

创建了一个测试的csv文件,命名为test.csv,数据长这样子 

首先将本地的csv文件上传到HDFS上去,这里采用命令的方式进行操作

hadoop fs -put /root/hadoop/hbasetest/test.csv /root/hadoop/input/test.csv

然后将上传到HDFS上的文件导入到HBase中,首先在HBase中建一个表用来存放这个文件的数据,

建表语句如下:

create 'test','baseinfo'

这里创建一个表名为test ,然后列簇名为baseinfo。  

表创建好后可以采用describe tablename的命令进行查看,可以用count tablename的命令查看行数 。

下面就是使用命令来进行操作,这里借用了mapreduce的包来进行导入。

hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator=',' -Dimporttsv.columns=HBASE_ROW_KEY,baseinfo:color,baseinfo:perfer test /root/hadoop/input/test.csv

下面解释下上面参数的意思,这里使用了ImportTsv方法,然后 后面的参数Dimporttsv.separator为定义分隔符为',' ,Dimporttsv.columns则是定义对应的列名,这里需要注意,第一个是需要指定row的位置,因为在我之前csv文件中第一行就是用来做为row的,所以这里的位置在第一个,那么灵活变动,如果你的row不在第一行,就把HBASE_ROW_KEY放到对应的位置上,然后后面则是将csv中的列color和perfer列名都放到了baseinfo这个列簇下面,在后面跟的就是对应的表名,以及要导入的文件在HDFS的路径。

然后执行后查看表,会发现数据是这样存放的。

在实际的操作中也测试过,如果没有列名的话,直接不指定列名,但是列簇名是一定要指定的。因为HBase中是按照列簇来划分。这一点可能和之前的理解的数据库有点不太一样,同样通过某一个row来查看某一个列簇下的列的话可以采用如下命令 

get 'test','"Alina"','baseinfo:color'

 

  • 1
    点赞
  • 22
    收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论 2

打赏作者

幸运的Alina

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值