使用 HBase本身提供的接口进行数据的导入和导出
操作步骤:
1.##导出数据
### hdfs 用户执行如下命令 su hdfs
hbase org.apache.hadoop.hbase.mapreduce.Export TEST_Hbase /tmp/TEST_Hbase
hbase org.apache.hadoop.hbase.mapreduce.Export TEST_HbaseTest /tmp/TEST_HbaseTest
2.### 将hdfs 文件取本地Linux
hadoop fs -get /tmp/TEST_Hbase /opt/
hadoop fs -get /tmp/TEST_HbaseTest /opt/
--传输---
03.### 将导出的Linux本地文件压缩发到HDFS文件系统下 /tmp/ 路径下
hadoop fs -put /opt/TEST_HbaseTest /tmp/TEST_HbaseTest
hadoop fs -put /opt/TEST_Hbase /tmp/TEST_Hbase
04.##建表--然后导入数据
###导入数据 格式./hbase org.apache.hadoop.hbase.mapreduce.Export 表名 数据文件位置
hbase org.apache.hadoop.hbase.mapreduce.Import TEST_HbaseTest /tmp/TEST_HbaseTest
hbase org.apache.hadoop.hbase.mapreduce.Import TEST_Hbase /tmp/TEST_Hbase
HBase数据的导入导出
1、导出:
hbase org.apache.hadoop.hbase.mapreduce.Driver export 表名 导出存放路径
其中数据文件位置可为本地文件目录,也可以分布式文件系统hdfs的路径。
当其为前者时,直接指定即可,也可以加前缀file:///
而当其为后者时,必须明确指明hdfs的路径,例如hdfs://192.168.1.200:9000/path#HDFS连接 default.FS对应的地址
fs.default.name
2、导入:表必须事先创建完成
hbase org.apache.hadoop.hbase.mapreduce.Driver import 表名 要导入的文件路径
同上,其中数据文件位置可为本地文件目录,也可以分布式文件系统hdfs的路径。
另外,该接口类还提供了一些其它的方法,例如表与表之间的数据拷贝,导入tsv文件等,可回车键查看
/hbase org.apache.hadoop.hbase.mapreduce.Driver import "action:useraction" "hdfs://172.19.100.191:8020/tmp/TEST_USERACTIONLEVEL_SPARK/part-m-00000"
3.说明
Export,fs的参数为hdfs上的路径时,该路径必须不能已经存在,否则会报错
Import的表必须是hbase中已经创建好的,否则会报错。
Import操作必须是使用Export出的数据才可以,要不然会报错 not a SequenceFile。
附录:
01.打包--压缩--Linux命令
tar
压缩 gzip bzip2 compress
压缩命名
解压缩命令
tar -xzvf TEST_USER.tar.gz
-x是解开
-z这个参数来调用gzip -j:有bz2属性的
-v:显示所有过程
-f指定包的文件名--放在最后
02.Hbase表操作
查看数据导入是否成功
hbase shell
list
describe 'TEST_HbaseTest'
scan "TEST_HbaseTest",{LIMIT=>5}
count "TEST_HbaseTest" , {INTERVAL => 1000, CACHE => 5000}
清空表
truncate "TEST_HbaseTest"
hbase删除表
首先
disable 'lj_test',
然后
drop 'lj_test'
hbase创建表
create 'TEST_HbaseTest',{NAME=>'info',COMPRESSION=>'SNAPPY'}
参考:
HBase数据的导入导出 http://blog.csdn.net/baolibin528/article/details/46064721