hbase数据导入导出工具使用
来源:互联网 发布:网络硬盘录像机连接图 编辑:程序博客网 时间:2024/05/16 00:24
hbase除了直接调用put接口将数据进行导入导出外,还提供了命令行工具来直接将特定格式的数据进行导入(或以特定格式将数据导出),
主要是利用org.apache.hadoop.hbase.mapreduce这个包里的接口:importTsv, completebulkload,import,export,
可以执行bin/hbase org.apache.hadoop.hbase.mapreduce.Driver
bin/hbase org.apache.hadoop.hbase.mapreduce.importTsv 等命令查看详细说明。
./hbase org.apache.hadoop.hbase.mapreduce.Driver也可以实现hbase两个表之间的数据互导。
前提:看上面包名即知道,这些方法主要是利用的MR来进行数据导入导出的,因此首先将集群的MR开启。
1 利用ImportTsv将csv格式文本导入hbase表中:
步骤:
a 先在hbase上生成表,如:create 't1','f1'
b 将csv数据上传到hdfs上,数据内容如下:
a,1a,,3a,4a
b,,2b,3b,4b
,1c,2c,3c,4c
c 利用如下命令进行导入:
./hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator="," -Dimporttsv.columns=HBASE_ROW_KEY,f1:a,f1:b,f1:c,f1:d t1 hdfs://nnip:9000/f1
如果MR程序正确完成,表示导入成功,否则查看打印出的错误,找出原因。
d 利用hbase的shell来查看数据:
hbase(main):002:0> scan 't1'
ROW COLUMN+CELL
column=f1:a, timestamp=1399429400879, value=1c
column=f1:b, timestamp=1399429400879, value=2c
column=f1:c, timestamp=1399429400879, value=3c
column=f1:d, timestamp=1399429400879, value=4c
a column=f1:a, timestamp=1399429400879, value=1a
a column=f1:b, timestamp=1399429400879, value=
a column=f1:c, timestamp=1399429400879, value=3a
a column=f1:d, timestamp=1399429400879, value=4a
b column=f1:a, timestamp=1399429400879, value=
b column=f1:b, timestamp=1399429400879, value=2b
b column=f1:c, timestamp=1399429400879, value=3b
b column=f1:d, timestamp=1399429400879, value=4b
可以看到,数据中即使为空的列,也被写入了hbase中,这是hbase默认的加载策略,如果对数据要求某一列不能为空有
2 利用completebulkload将csv格式文本导入hbase表中:
a 利用 ImportTsv在hdfs上生成hfile格式文件
./hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator="," -Dimporttsv.columns=HBASE_ROW_KEY,f1:a,f1:b,f1:c,f1:d -Dimporttsv.bulk.output=hdfs://nnip:9000/out1 t1 hdfs://nnip:9000/f1
或者利用hadoop的命令进行:
$HADOOP_HOME/bin/hadoop jar $HBASE_HOME/hbase-0.94.8.jar importtsv \
-Dimporttsv.bulk.output=hdfs://nnip:9000/out1 \ # 输出hfile到t1,注意,out1必须不存在
-Dimporttsv.separator="," \ #指定输入文件的分隔符为, (默认为tab)
-Dimporttsv.columns=HBASE_ROW_KEY,t:c1,t:c2 \ #源文件的第一列为rowkey,第二列为t:c1,第三列为t:c2
table1 \ #hbase表名
hdfs://nnip:9000/b1 #源数据文件
黑体标出了要将生成的hfile的存放目录(此目录必须是不存在的)。
此命令生成hfile的同时,也会在hbase上生成表t1(如果不存在的话),此时表是空的。
b 将hfile挂载到表t1上:
./hadoop jar lib/hbase-*.jar completebulkload out1 t1
注意:执行该命令时,hadoop很可能会找不到相关的hbase依赖包,出现ClassNotFoundException的异常。一个简单的解决方法是将hbase相关的jar包都放到${HADOOP_HOME}/lib下面,这样hadoop就能在运行前加载相关的hbase jar files。
运行该命令的本质是一个hdfs的mv操作,并不会启动MapReduce。
执行完后,表t1里面就有了新导入的数据。
方法1和方法2的区别在于,方法1是在MR中调用hbase的api接口进行put数据,而方法2则是完全绕过hbase的过程,利用MR直接生成hfile文件,再挂载到hbase的对应表中。
5 利用pig从HBase中导出csv格式文件:
x = LOAD 'hbase://t1' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('f1:c1 f1:c2','-loadKey true');
STORE x INTO 'pigres.csv' USING PigStorage(',');
- hbase数据导入导出工具使用
- Hbase导入导出数据
- Hbase数据导入导出
- hbase导入导出数据
- 数据泵导出导入工具的使用
- HBase数据的导入导出
- HBase数据的导入导出
- hbase 数据的导入导出
- hbase 导入导出/数据迁移
- 数据导入导出工具
- 使用HDFS和HBASE导出导入功能进行数据迁移
- 使用sqoop工具进行数据导入导出 sqoop并行导入
- HBase工具ImportTsv导入数据
- HBase数据导入工具总结
- HBase数据的导入和导出
- hbase数据的导入与导出
- HBase数据的导入和导出
- Hbase表数据的导入和导出
- 数据结构的术语
- android中logcat学习笔记(1)
- JBoss AS 7性能调优(三)
- 删除U盘时提示无法停止‘通用卷’设备的解决方法
- 按回车键 组件与服务器进行提交
- hbase数据导入导出工具使用
- 关于iOS沙盒路径问题
- Http 用Stream传输
- 操作DataRowCollection
- Qt 获取屏幕的大小
- TCP协议疑难杂症全景解析
- OCP-1Z0-051 第86题 显式转换和隐式转换
- xml文件处理
- LeeCode Pascal's Triangle II