Sqoop 导入数据到hive过程解析

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
  1. 该目录下数据cp到指定的hive表emp_sqoop_test 的目录
  2. -rwxr-xr-x 1 hadoop supergroup 887 2018-10-31 06:52 /user/hive/warehouse/ruozedata_test.db/emp_sqopp_test/
  3. 最后load成功之后会删除临时目录
  4. /user/hadoop/emp

所以 sqoop导入数据到hive的过程:

  1. mysql表导入到HDFS的当前用户目录下(相当于临时文件)
  2. 再从上面的临时文件复制到最终指定的HDFS目录下
  3. 最后删除临时目录

注意:

  1. 如果中途中断提交的任务,而此时已经存在临时目录
  2. 再执行导入的时候,会报错:
  3. hdfs://192.168.52.130:9000/user/hadoop/emp already exists
  4. 只好删除临时目录在执行导入代码

你可能感兴趣的:(sqoop)