Mysql和hbase的数据互导
1.将mysql中的表导入到hbase中
主机hadoop01 的mysql数据库中的的 test数据库下的student表中的数据如下:
±-----±-------±-----------±------+
| s_id | s_name | s_birth | s_sex |
±-----±-------±-----------±------+
| 01 | 赵雷 | 1990-01-01 | 男 |
| 02 | 钱电 | 1990-12-21 | 男 |
| 03 | 孙风 | 1990-05-20 | 男 |
| 04 | 李云 | 1990-08-06 | 男 |
| 05 | 周梅 | 1991-12-01 | 女 |
| 06 | 吴兰 | 1992-03-01 | 女 |
| 07 | 郑竹 | 1989-07-01 | 女 |
| 08 | 王菊 | 1990-01-20 | 女 |
±-----±-------±-----------±------+
将这个表中的数据导入到hbase中
有两种导入的方式
1.直接导入 在导入的过程中创建hbase中的表
sqoop import --connect jdbc:mysql://hadoop01/test --username root --password root --table student --hbase-create-table --hbase-table studenttest --column-family name --hbase-row-key id
下边对这句话进行解析
sqoop import //使用sqoop导入
–connect jdbc:mysql://hadoop01/test --username root --password root 连接hadoop01主机的mysql数据库 数据库的名字是test 用户名数root 密码root
–table student --hbase-create-table --hbase-table studenttest
mysql中的表的名字是student 自动创建hbase中的表 表的名字是student_mysql_hbase
–column-family name 指定hbase中的列簇的名字是name
–hbase-row-key s_id指定mysql中的s_id列的值作为hbase表中的行键
但是输入这段话之后会报错
Exception in thread “main” java.lang.NoSuchMethodError:
org.apache.hadoop.hbase.HTableDescriptor.addFamily(Lorg/apache/hadoop/hbase/HColumnDescriptor;)V 是由于版本不兼容引起,我们可以通过事先创建好表就可以使用了。
2.直接先在hbase中创建一张表
create “student_mysql_hbase”,“name”
之后使用下边的语句
sqoop import --connect jdbc:mysql://hadoop01/test --username root --password root --table student --hbase-table student_mysql_hbase --column-family name --hbase-row-key s_id
之后执行
执行成功
查看hbase中的student_mysql_hbase表的数据
2.将hbase中的数据导出到mysql
目前没有直接的命令将 Hbase 中的数据导出到 mysql,但是可以先将 hbase 中的数据导
出到 hdfs 中,再将数据导出 mysq
替代方案:
先将 hbase 的数据导入到 hdfs 或者 hive,然后再将数据导入到 mysql