Sqoop将mysql数据导入HBase
·
环境
- Hadoop 2.7.3
- HBase 1.3.1
- Sqoop 1.4.7
- MySQL 8.0
参数
导入HBase的控制参数
| 参数 | 描述 |
|---|---|
| –column-family | 设置导入的目标列族 |
| –hbase-create-table | 目标HBase表不存在时,允许自动创建表 |
| –hbase-row-key (col) | 指定将哪个输入的列用作rowkey,如果输入的表包含复合键,则col的格式必须是逗号分割的组合键属性列表 |
| –hbase-table (table-name) | 指定作为导入目标的HBase表 |
| hbase-bulkload | 启用批量加载 |
📢注意:
sqoop导入hbase时无法和参数–direct一起使用
如果导入时没有指定–hbase-create-table,则需要在运行前在hbase中创建该表和对应列族,不然在进行导入时会失败。如果指定了–hbase-create-table,则在检测到没有该表时,sqoop会自动创建目标表和列族
测试
1.将mysql中customer表导入到hbase中

检查hbase 表列表

导入命令
sqoop import \
--connect jdbc:mysql://lingyun2:3306/niit?useSSL=false \
--username root \
--P
--table customer \ #对应mysql中的表
--hbase-table customer \ #对应导入的hbase的表
--column-family cf-info \ #对应导入的hbase表的列族
--hbase-create-table \ #当检测到habse不存在目标时,自动进行创建
--hbase-row-key id \ #对应导入的hbase表中的rowkey
--hbase-bulkload #启用批量加载
因为我之前讲customer表导入到hdfs过,所以报错customer已存在,只需要将–hbase-table customer中的customer表改个名字重新运行即可

导入成功,结果如下


更多推荐


所有评论(0)