sqoop是什么?
主要用于在hadoop(hive)与传统的数据库间进行数据的传递,可以将一个关系型的数据库中的数据导进到hadoopd的hdfs中,也可以将hdfs的数据导进到关系型的数据库中.
sqoop的原理
将导入或导出命令翻译成mapreduce程序来实现,主要对inputformat和outputformat进行定制
sqoop的简单使用案例
sqoop导入数据到hdfs
- 全部导入
bin/sqoop import --connect jdbc:mysql://localhost:3306/hive --username root --password 1998 --table student --target-dir /usr/local ## 注意是hdfs上面的路径 --delete-target-dir ##原来的路径存在就删除 --num-mappers 1 --fields-terminated-by "\t" ## 属性之间的分割符 默认是逗号
- 查询导入 query参数
bin/sqoop import --connect jdbc:mysql://localhost:3306/hive --username root --password 1998 --table student --target-dir /usr/local ## 注意是hdfs上面的路径 --delete-target-dir ##原来的路径存在就删除 --num-mappers 1 --fields-terminated-by "\t" ## 属性之间的分割符 默认是逗号 --query 'select name,id from student where id > 3'
- 导入指定列
--columns id,sex
导入到hive中
bin/sqoop import --connect jdbc:mysql://localhost:3306/hive
--username root
--password 1998
--table student
--num-mappers 1
--hive-import
--fields-terminated-by "\t"
--hive-overwrite ## 重写
-–hive-database student ## 指定数据库
--hive-table school ###指定表
导出数据到mysql数据库
Mysql中如果表不存在,不会自动创建
bin/sqoop export
--connect jdbc:mysql://hadoop102:3306/company
--username root
--password 000000
--table staff
--num-mappers 1
--export-dir /user/hive/warehouse/staff_hive
--input-fields-terminated-by "\t"
脚本方式运行
将繁杂的代码封装到文件中并设置为.opt的文件
下次运行直接运行
bin/sqoop --options-file /opt/test.opt