zoukankan      html  css  js  c++  java
  • HBase表的数据导出和导入

    1. 表数据导出

    hbase org.apache.hadoop.hbase.mapreduce.Export test file:///home/hadoop/test (导入到本地)

    hbase org.apache.hadoop.hbase.mapreduce.Export test /user/hadoop/test (导入到hdfs上)

    #创建一个test表,一个列簇info
    hbase(main):004:0* create 'test','info'
    0 row(s) in 4.3820 seconds
    
    => Hbase::Table - test
    hbase(main):005:0> put 'test','001','info:name','tom'
    0 row(s) in 0.4710 seconds
    
    hbase(main):006:0> put 'test','001','info:age','18'
    0 row(s) in 0.0490 seconds
    
    hbase(main):007:0> put 'test','002','info:name','jerry'
    0 row(s) in 0.0490 seconds
    
    hbase(main):008:0> put 'test','002','info:age','19'
    0 row(s) in 0.0350 seconds
    

    我们将test表导入到hdfs中

    [hadoop@SHQZ-PS-IOT-TEST-APP01 ~]$ hbase org.apache.hadoop.hbase.mapreduce.Export  test  /user/hadoop/test
    

    该命令会启动一个mapreduce程序来完成数据的导出,等待程序执行完成,查看导出后的文件

    [hadoop@SHQZ-PS-IOT-TEST-APP01 ~]$ hdfs dfs -ls /user/hadoop/test
    Found 2 items
    -rw-r--r--   3 hadoop supergroup          0 2018-05-17 21:33 /user/hadoop/test/_SUCCESS
    -rw-r--r--   3 hadoop supergroup        284 2018-05-17 21:33 /user/hadoop/test/part-m-00000
    [hadoop@SHQZ-PS-IOT-TEST-APP01 ~]$ 
    

    注意:上面以part-m开头的文件就是导出的数据文件,我们可以看下它的内容

    [hadoop@SHQZ-PS-IOT-TEST-APP01 ~]$ hdfs dfs -cat /user/hadoop/test/part-m-00000
    SEQ1org.apache.hadoop.hbase.io.ImmutableBytesWritable%org.apache.hadoop.hbase.client.ResultP
    l7D~UL001D
    
    001infoage 218
    
    001infoname 2tom (N002F
    
    002infoage 219
    !
    002infoname 2jerry (
    

    2. 导入数据

    导入数据前,一定要在hbase上创建同名表,否则会报错,找不到表

    hbase org.apache.hadoop.hbase.mapreduce.Import test file:///home/hadoop/test (从本地导入)

    hbase org.apache.hadoop.hbase.mapreduce.Import test /user/hadoop/test (从hdfs上导入)

    # 先删除之前的test表,然后重新创建
    hbase(main):004:0> disable 'test'
    0 row(s) in 2.2780 seconds
    
    hbase(main):006:0> drop 'test'
    0 row(s) in 1.3260 seconds
    
    #重新创建test表
    hbase(main):016:0* create 'test','info'
    0 row(s) in 1.2400 seconds
    
    => Hbase::Table - test
    

    执行命令导入数据,导入目录一定要是数据文件所在目录

    [hadoop@SHQZ-PS-IOT-TEST-APP01 ~]$ hbase org.apache.hadoop.hbase.mapreduce.Import  test  /user/hadoop/test
    

    和导出命令类似,该命令同样会启动一个mapreduce任务来完成数据的导入,之后我们进入hbase shell查看数据是否导入了

    hbase(main):020:0* scan 'test'
    ROW                                 COLUMN+CELL                                                                                         
     001                                column=info:age, timestamp=1526563694645, value=18                                                  
     001                                column=info:name, timestamp=1526563629119, value=tom                                                
     002                                column=info:age, timestamp=1526563723288, value=19                                                  
     002                                column=info:name, timestamp=1526563706773, value=jerry                                              
    2 row(s) in 0.1570 seconds
    

    可以看到,数据已经成功导入。

    另外,我在将数据导出到本地,然后再导入到hbase中时,两个mapreduce任务执行均出现了报错,但是数据导出和导出成功了,而且数据没有丢失,尚未搞清楚,待摸索中~~

  • 相关阅读:
    Git 获取远程分支
    entOS查看系统信息-CentOS查看命令
    CentOS6.5下用yum安装 git
    CENTOS如何禁用ROOT本地或远程SSH登录
    ProtoBuf练习(二)
    ProtoBuf练习(一)
    ProtoBuf练习
    Protocol Buffers官方文档(开发指南)
    Protocol Buffers官方文档(proto3语言指南)
    Boost Python学习笔记(五)
  • 原文地址:https://www.cnblogs.com/leekeggs/p/9347354.html
Copyright © 2011-2022 走看看