Sqoop是一个RDBMS和hadoop之间高效传输数据工具,本文重点介绍与MySQL的导入导出工作
1,安装注意事项
在这里我不得不说一下,sqoop在下载安装时,要注意与mysql驱动的版本兼容性
sqoop真的是兼容性太差,这次我也是栽到坑爬不出来了,具体网上说是mysql驱动版本不一致,小编也是倒腾一天也没见好转,最奇葩的就是可以在hdfs上和导入导出,hive和hbase就完蛋,编译没错,一运行就gg,不过写的命令是没错的,大家可以放心使用。
2,mysql和hdfs上的导入导出
1,mysql导入到hdfs上 //有主键的表 $>sqoop import --connect jdbc:mysql://192.168.192.1:3306/acc //连接端口/数据库名 --driver com.mysql.jdbc.Driver //驱动 --username root //用户名 --password zxz //密码 --table school //mysql表名 --columns id,name //指定字段列表 --m 1 //指定map的任务数(一般用在无主键情况下) --target-dir /user/had/hadoop/mysql //hdfs的目录 //控制增量导入(可选) --check-column id //指定从哪个字段控制 --incremental append //表示从上次数据上追加 --last-value 11 //上次导入的最后一个数据值 列如:sqoop inport --connect --connect jdbc:mysql://192.168.192.1:3306/acc --driver com.mysql.jdbc.Driver --username root --password zxz--table school--columns id,name --m 3 --target-dir /user/had/hadoop/mysql //无主键的表 $>sqoop inport --connect jdbc:mysql://192.168.192.1:3306/acc --driver com.mysql.jdbc.Driver --username root --password zxz --table school --target-dir user/had/hadoop/mysql -m 1 //使用一个map 列如:sqoop export --connect --connect jdbc:mysql://192.168.192.1:3306/acc --driver com.mysql.jdbc.Driver --username root --password zxz--table school--columns id,name --m 1 --target-dir /user/had/hadoop/mysql 2,hdfs导出数据到mysql(其实和上面的一样就是把--target-dir换成--export-dir) 例如: sqoop export --connect jdbc:mysql://192.168.129.1:3306/accp --driver com.mysql.jdbc.Driver --username root --password zxz --table school --export-dir /hadoop/mysql2
3,mysql在hive上导入(sqoop不支持hbase和hive向mysql里导入数据)
mysql导入数据到hive(相同的命令我就不说了说一下需要添加什么) --hive-import //声明向hive导入数据 --create-hive-table //声明向hive自动建表(有时候可能不好使,还带需要自己手动建) --hive-talbe school //指定表 --hive-database default //指定数据库,不过不指定他好像会自动添加到默认数据库分钟 例如: sqoop import --connect jdbc:mysql://192.168.192.1:3306/acc --driver com.mysql.jdbc.Driver --username root --password zxz --table school --hive-import --create-hive-table --hive-table school
4.mysql导入数据到hbase
mysql导入数据到hbase上(在导入之前要在hbase上创建好表和列族) --hbase-create-table //指定在hbase上建表 --hbase-table zxz:acc //指定表 --hbase-row-key id //指定在MySQL中的那个表充当rowkey --column-family z1 //指定列族 -m 1 //使用一个map 例如: sqoop import --connect jdbc:mysql://localhost:3306/acc --driver com.mysql.jdbc.Driver --username root --password zxz --table school --hbase-create-table --hbase-table zxz:acc --hbase-row-key id --column-family z1 -m 1