sqoop把hive导入mysql
首先我们的hive表为:
在hdfs上的源数据路径如下:这个路径在你安装hive的时候的hive-site.xml的配置里有配置,具体看你配置文件
现在mysql端创建我们要导进来的表,这创建语句可以自行百度,没啥难度,这里mysql的表为trips
我安装好的sqoop版本是1.4的
sqoop语句为:
sqoop export --connect jdbc:mysql://master:3306/hive_test --username root --password root --table trips --num-mappers 1 --export-dir /user/hive/warehouse/hive_test/trips_test --input-fields-terminated-by ","
参数说明:
--connect jdbc:mysql://master:3306/hive_test 为mysql的连接器,hive_test为MySQL刚刚创建的数据库,具体看上面mysql创建导入表那步骤
--username root --password root --table trips mysql数据库的用户名跟密码,还有要导入的表,这里的trips为刚刚mysql创建的导入表
--num-mappers 运行的的map数
--export-dir /user/hive/warehouse/hive_test/trips_test 这里为hive在hdfs上的源数据路径,具体看上面hive源数据路径
--input-fields-terminated-by "," 导入的时候是按照逗号分割的,因为我的数据文件是csv导入进来的,故需要此参数,如果不是csv的文件的,看你源数据里面是的每列分隔符
运行结果
Mysql查看数据是否导入成功:
sqoop把MySQL导入到hbase
进入hbase shell创建一个表名为trips,列族为info的测试表
使用sqoop命令将mysql中的trips数据导入到hbase的trips表
sqoop命令
sqoop import --driver com.mysql.jdbc.Driver --connect "jdbc:mysql://master:3306/hive_test?zeroDateTimeBehavior=convertToNull" --username root --password root --table trips --columns userid,instationname,intime,outstationname,outtime,path,price --hbase-table trips --column-family info --hbase-row-key userid --hbase-create-table -m 1
参数说明:
--driver com.mysql.jdbc.Driver --connect "jdbc:mysql://master:3306/hive_test?zeroDateTimeBehavior=convertToNull" mysql连接器
--username root --password root --table trips mysql数据库的用户名和密码,还有要导出来的表trips_test
--columns userid,instationname,intime,outstationname,outtime,path,price mysql的trips表里的列名,看需求选择列名,我这里是全部导入到hbase表,故选择7个列名,相反,想导入哪个列到hbase,就指定哪些列
--hbase-table trips --column-family info hbase的表名和列族
--hbase-row-key userid 指定行键为哪个列,该userid必须存在前面指定导入的列名中
--hbase-create-table -m 1 默认创建一个表
运行结果:
查询hbase中的trips表是否导入成功!
感谢大家的观看!!