1.
mysql数据库(sqoop)emp表导入到hive中数据库(ruozedata_teset)的emp_sqoop_test表
- 执行下面代码
sqoop import \
--connect jdbc:mysql://192.168.52.130:3306/sqoop \
--username root \
--password 123456 \
-m 1 \
--table emp \
--hive-database 'ruozedata_test' \
--hive-import \
--hive-overwrite \
--direct \
--hive-table 'emp_sqopp_test' \
--fields-terminated-by '\t' \
--input-null-non-string '0' \
--input-null-string ''
- 先在hdfs当前用户目录生成emp文件
- 如
1. :drwxr-xr-x - hadoop supergroup 0 2018-10-31 06:47 /user/hadoop/emp
- 该目录下数据cp到指定的hive表emp_sqoop_test 的目录
-rwxr-xr-x 1 hadoop supergroup 887 2018-10-31 06:52 /user/hive/warehouse/ruozedata_test.db/emp_sqopp_test/
- 最后load成功之后会删除临时目录
/user/hadoop/emp
所以 sqoop导入数据到hive的过程:
- mysql表导入到HDFS的当前用户目录下(相当于临时文件)
- 再从上面的临时文件复制到最终指定的HDFS目录下
- 最后删除临时目录
注意:
- 如果中途中断提交的任务,而此时已经存在临时目录
- 再执行导入的时候,会报错:
hdfs://192.168.52.130:9000/user/hadoop/emp already exists
- 只好删除临时目录在执行导入代码