1. 首页
  2. 大数据
  3. Sqoop教程

【Sqoop教程】(五)Sqoop import详解之RDBMS数据导入HBase

首先,既然都是import,显然上上篇(教程三)的命令参数绝大部分也适合本篇文章。只不过导入到HBase多了一些HBase固定的参数。

导入HBase命令概览

HBase arguments:
   --column-family <family>    指定column family
   --hbase-bulkload            开启HBase bulk loading
   --hbase-create-table        创建不存在的HBase tables
   --hbase-row-key <col>       指定row key                              
   --hbase-table <table>       指定HBase表

我们知道HBase的关键就是表、列簇、row key,所以这三是必不可少的。如果想要快速导入数据就使用–hbase-bulkload。至于–hbase-create-table一般不用,因为一般不会在这里创建表,都是先在Hbase中创建好的。

案例一:Mysql导入到HBase中

[root@master bin]# ./sqoop import  --connect jdbc:mysql://master:3306/employees --username root --password 123456 \
> --table dept_emp \
> --hbase-table dept_emp \
> --hbase-row-key emp_no \
> --column-family info \
> -m 1 
18/05/05 11:19:37 INFO mapreduce.ImportJobBase: Transferred 40.2291 MB in 72.7272 seconds
18/05/05 11:19:37 INFO mapreduce.ImportJobBase: Retrieved 331603 records.

案例二:使用hbase-bulkload使得导入速度更快

案例一中,导入331603条数据用了72.7272 seconds,我们试一下bulkload有没有更加快速。

[root@master bin]# ./sqoop import  --connect jdbc:mysql://master:3306/employees --username root --password 123456 \
> --table dept_emp \
> --hbase-table dept_emp \
> --hbase-row-key emp_no \
> --column-family info \
> -m 1 \
> --hbase-bulkload
18/05/05 11:25:36 INFO mapreduce.ImportJobBase: Transferred 40.2291 MB in 55.0006 seconds 
18/05/05 11:25:36 INFO mapreduce.ImportJobBase: Retrieved 331603 records.

只用了55s,速度确实变快了,至于为什么会变快,这涉及到HBase中bulkload的知识,需要懂Hbase架构原理才行,Hbase中写入数据不是直接写的,而是会先经过memstore,达到一定程度后flush到HFile,而bulk Load利用了HBase的数据信息是按照特定格式存储在HDFS 里的这一特性,直接在HDFS中生成持久化的HFile数据格式文件,跳过了MemStore自然会更快了。具体知识这里就不过多概述,读者去参考HBase的教程。

BDStar原创文章。发布者:Liuyanling,转载请注明出处:http://bigdata-star.com/archives/974

发表评论

登录后才能评论

联系我们

562373081

在线咨询:点击这里给我发消息

邮件:562373081@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code