大数据 Docker Hbase 表数据导入/导出
前言
本文软件环境
Hadoop3.3.6
Hbase2.5.10
创建test表并插入数据
hbase shell -n
list
create 'test','dz'
put 'test','rowkey0001','dz:a','0001'
put 'test','rowkey0002','dz:b','0002'
put 'test','rowkey0003','dz:b','0003'
scan 'test'
exit
导出表数据
导出表数据到hdfs目录/tmp/hbase-export
hbase org.apache.hadoop.hbase.mapreduce.Export test hdfs://hadoop-04:8020/tmp/hbase-export/test
提示:可以通过
-D hbase.xxx=xx
来限定数据范围
-D hbase.mapreduce.scan.column.family=dz
限定列簇,多个以逗号分隔
-D hbase.mapreduce.scan.row.start=rowkey0001
开始RowKey
-D hbase.mapreduce.scan.row.stop=rowkey0003
结束RowKey
上面命令可写为
hbase org.apache.hadoop.hbase.mapreduce.Export -D hbase.mapreduce.scan.column.family=dz -D hbase.mapreduce.scan.row.start=rowkey0001 -D hbase.mapreduce.scan.row.stop=rowkey0003 test hdfs://hadoop-04:8020/tmp/hbase-export/test
用命令查看导出结果
hdfs dfs -ls /tmp/hbase-export/test
如下:
[hadoop@hadoop-04 exp]$ hdfs dfs -ls /tmp/hbase-export/test
Found 2 items
-rw-r--r-- 3 hadoop supergroup 0 2024-12-25 13:27 /tmp/hbase-export/test/_SUCCESS
-rw-r--r-- 3 hadoop supergroup 279 2024-12-25 13:27 /tmp/hbase-export/test/part-m-00000
导出数据文件到本地
hdfs dfs -copyToLocal -f /tmp/hbase-export/test ~/expData/
ls -lR ~/expData
如下
[hadoop@hadoop-04 expData]$ hdfs dfs -copyToLocal -f /tmp/hbase-export/test ~/expData/
[hadoop@hadoop-04 expData]$ ls -lR ~/expData
/home/hadoop/expData:
total 4
drwxr-xr-x 2 hadoop hadoop 4096 12月 25 13:54 test
/home/hadoop/expData/test:
total 4
-rw-r--r-- 1 hadoop hadoop 279 12月 25 13:54 part-m-00000
-rw-r--r-- 1 hadoop hadoop 0 12月 25 13:54 _SUCCESS
导入表数据
上传数据文件到hdfs导入目录
hdfs dfs -mkdir -p /tmp/hbase-import
hdfs dfs -copyFromLocal -f ~/expData/test /tmp/hbase-import
hdfs dfs -ls /tmp/hbase-import/test
结果如下
[hadoop@hadoop-04 expData]$ hdfs dfs -mkdir -p /tmp/hbase-import
[hadoop@hadoop-04 expData]$ hdfs dfs -copyFromLocal -f ~/expData/test /tmp/hbase-import
[hadoop@hadoop-04 expData]$ hdfs dfs -ls /tmp/hbase-import/test
Found 2 items
-rw-r--r-- 2 hadoop supergroup 0 2024-12-25 14:23 /tmp/hbase-import/test/_SUCCESS
-rw-r--r-- 2 hadoop supergroup 244 2024-12-25 14:23 /tmp/hbase-import/test/part-m-00000
导入数据到Hbase
创建导入表
hbase shell -n
list
create 'test1','dz'
scan 'test1'
exit
结果如下
hbase:008:0> create 'test1','dz'
Created table test1
Took 8.3095 seconds
=> Hbase::Table - test1
hbase:009:0> scan 'test1'
ROW COLUMN+CELL
0 row(s)
Took 0.0540 seconds
hbase:010:0>
执行导入
hbase org.apache.hadoop.hbase.mapreduce.Import test1 hdfs://hadoop-04:8020/tmp/hbase-import/test
查看导入结果
hbase shell -n
scan 'test1'
结果如下
hbase:010:0> scan 'test1'
ROW COLUMN+CELL
rowkey0001 column=dz:a, timestamp=2024-12-25T14:11:10.592, value=0001
rowkey0002 column=dz:b, timestamp=2024-12-25T14:11:10.758, value=0002
2 row(s)
Took 0.0261 seconds
从结果可以看出导出中批量开始结束rowkey,是一个左闭右开的集合区间