sqoop安装
sqoop安装还算简单,再服务器上解压安装文件。sqoop安装目录如下:
修改配置文件conf/sqoop-env.sh(我自己改过名),指定hadoop和hive。
lib目录添加ojdbc和java_json的驱动包。
sqoop使用
oracle导入hdfs
bin/sqoop import \
--connect jdbc:mysql://hadoop102:3306/company \
--username root \
--password 000000 \
--table staff \
--target-dir /user/company \
--num-mappers 1 \
--fields-terminated-by "\t"
# 以下选加
--query 'select name,sex from staff where id <=1 and $CONDITIONS
--columns id,sex \
--where "id=1"
oracle导入hive
bin/sqoop import \
--connect jdbc:mysql://hadoop102:3306/company \
--username root \
--password 000000 \
--table staff \
--num-mappers 1 \
--hive-import \
--fields-terminated-by "\t" \
--hive-overwrite \
--hive-table staff_hive
hive导出oracle
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"
注意事项:
基本的语法就这些,下面有几条注意事项,都是自己踩的坑。
1) 导出数据时,oracle上的表要建好。
2) 连接oracle的话,oracle的表明要大写。
3)sqoop导出数据时,只支持全量导出或增量导出。无法选定列,如需制定列,可以再hive端处理分析合适后再用sqoop导出。
4) 尚硅谷文档中的sqoop脚本执行的方法不是很好用,建议直接写在shell脚本中执行。
其他
补充一点在尝试过程中遇到的hive的问题。之前我们自己生成的hive数据(内部表)的底层文件全都是deflate压缩文件,sqoop是直接拿底层文件做解析传输,所以压缩文件无法操作。查询了一些资料,需要更改hive的配置文件,有一个reduce输出自动压缩的选择需要设置为false。