01.06 bulkload的学习

之前在学习importTSV我们准备两份数据

bulkload的学习

这两份数据在导入hbase后,数据还是存在的,我们如果想要实现和hive中类似"剪切"的功能该怎么办?这种可以跨过先写入memstore,直接将数据转换为storefile文件。

我们来操作

第一步:转换为Hfile

执行语句

/opt/bigdata/hadoop-2.7.3/bin/yarn jar /opt/bigdata/hbase-1.2.1/lib/hbase-server-1.2.1.jar importtsv -Dimporttsv.columns=HBASE_ROW_KEY,f1:name,f2:age,f3:addr,f1:location -Dimporttsv.bulk.output=/testHfile stu_info_importtsv /importTSVData/stu_info_out

bulkload的学习

会生成一个新的目录

bulkload的学习

生成内容

/testHfile

bulkload的学习

这个时候,在

/hbase/data/default/stu_info_importtsv/1ba134e9102fdfb6a6c34c5785a69692

下我们可以看到f1,f2,f3

bulkload的学习

我们接下来只需要将/testHfile/f1下的文件移动到/hbase/data/default/stu_info_importtsv/1ba134e9102fdfb6a6c34c5785a69692/f1就可以了

第二步:将Hfile导入到hbase表中 completebulkload (hdfs上做了移动文件的操作)

bulkload的学习

执行语句

/opt/bigdata/hadoop-2.7.3/bin/yarn jar /opt/bigdata/hbase-1.2.1/lib/hbase-server-1.2.1.jar completebulkload /testHfile stu_info_importtsv

bulkload的学习

速度很快

bulkload的学习

发现在

/hbase/data/default/stu_info_importtsv/1ba134e9102fdfb6a6c34c5785a69692/f1

已经出现了

bulkload的学习

而在/testHfile/f1已经没有数据了

bulkload的学习

在hbase中看下数据

bulkload的学习

我们可以合并这两个文件吗?

bulkload的学习

可以使用

major_compact 'stu_info_importtsv'

bulkload的学习

查看下,发现已经合并了

bulkload的学习

我们再在网页上查看下

bulkload的学习

我们手动做一下split操作

split 'stu_info_importtsv' ,'202001061344'

bulkload的学习

发现已经手动切割了,上下限也有了

bulkload的学习

这边也是两个了

bulkload的学习

第二步像hive的load加载,IO消耗比较低,减少了client和节点之间的RPC通信

将批量的文件先转换为Hfile,可以批量导入hbase中(底层还是封装好的java程序)

bulkload方式还是可以用代码实现的

创建一个类

bulkload的学习

导入的包

bulkload的学习

编写Map

bulkload的学习

Run方法

bulkload的学习

编写执行方法

bulkload的学习

创建表

create 'student','info'

bulkload的学习

查看下数据,是否存在

/opt/bigdata/hadoop-2.7.3/bin/hdfs dfs -text /importTSVData/stu_info_out

bulkload的学习

运行代码,查看生成的数据

bulkload的学习

HDFS上也存在

bulkload的学习


分享到:


相關文章: