- sqoop
- 数据同步
- hbase
使用sqoop将数据从mysql同步到hbase
知识点-HBase初体验
知识点-愉快地通过Thrift访问HBase
知识点-HBaseClient(Java)
目前机器使用的sqoop版本
# sqoop version
Warning: /usr/hdp/2.5.3.0-37/accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
17/12/13 22:34:23 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6.2.5.3.0-37
Sqoop 1.4.6.2.5.3.0-37
git commit id 16c017e90fdde118be73d46eff10cf2c068387e9
Compiled by jenkins on Wed Nov 30 02:29:18 UTC 2016
sqoop1.4.6文档 https://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html
Sqoop是用来在Hadoop和关系数据库或者大型机之间做数据迁移的一个工具。
可以使用Sqoop从关系型数据库管理系统如MySQL、Oracle中将数据导入到Hadoop分布式文件系统(HDFS)中,也可以从HDFS导出数据到RDBMS中。
RDBMS需要提供数据所在的schema(数据库连接和用户名密码等信息),Sqoop使用MapReduce导入和导出数据,MR提供了容错机制和并行运算。
Sqoop是Apache基金会开源的软件产品,官网http://sqoop.apache.org
Github地址 https://github.com/apache/sqoop
使用实例
sqoop import "-Dorg.apache.sqoop.splitter.allow_text_splitter=true" \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://host:3306/databasename \
--username root \
--password root \
--query "select a.id, a.create_date from table_a a WHERE 1=1 AND \$CONDITIONS" \
--hbase-table test_sqoop \
--column-family 'fts' \
--hbase-row-key id --split-by create_date -m 3
7.2.13. Importing Data Into HBase
--hbase-table 指定HBase表。
每一行输入的数据都会转换为HBase的Put操作作为输出到HBase表的行。
默认情况下,Sqoop会使用--split-by的列[上面的create_date]作为rowkey。
也可以通过--hbase-row-key指定作为rowkey的列。
每一个输出行都会放在同一个列族中,必须通过--column-family指定列族。
不能使用--direct【会冲突】。
--hbase-row-key也可以指定复合行健,中间使用逗号隔开。
默认如果HBase表和列族不存在,Sqoop会直接报错退出,所以需要在Sqoop执行之前创建好HBase表和列族。
如果指定--hbase-create-table和列族,HBase表不存在则会自动创建。
Sqoop会序列化所有的值,以字符串形式转化为utf-8的字节数组存到HBase中。
Sqoop会跳过除了行健之外所有为MULL的列。
指定--hbase-bulkload可以采用大批量加载来替代直接写入HBase。
转载于:https://blog.51cto.com/shaozhipeng/2051296