Hive sqoop导入到配置单元

Hive sqoop导入到配置单元,hive,sqoop,Hive,Sqoop,第一命令: sqoop import \ –connect “jdbc:mysql://quickstart.cloudera:3306/retail_db” \ –username retail_dba \ –password cloudera \ –table departments \ –hive-home /user/hive/warehouse \ –hive-import \ –hive-overwrite \ –hive-table sqoop_import.departments

第一命令:

sqoop import \
–connect “jdbc:mysql://quickstart.cloudera:3306/retail_db” \
–username retail_dba \
–password cloudera \
–table departments \
–hive-home /user/hive/warehouse \
–hive-import \
–hive-overwrite \
–hive-table sqoop_import.departments \
–outdir java_files
第二命令:

sqoop import \
–connect “jdbc:mysql://quickstart.cloudera:3306/retail_db” \
–username retail_dba \
–password cloudera \
–table departments \
–target-dir=/user/hive/warehouse/department_test \
–append

在这两个命令中,我们都在配置单元中创建表,而不指定字段和行分隔符,并使用sqoop导入,那么为什么在第二种情况下,我们得到的是Null,而在第一种情况下,我们没有得到配置单元的默认分隔符

  • 字段:
    CTRL+A
  • 行:
    \n
案例1:蜂巢导入

将表导入配置单元(如果未设置任何分隔符,则使用配置单元的默认分隔符。)

此外,它使用配置单元的默认分隔符创建
--hive table
中提到的表(如果不存在)

案例2:HDFS导入

在这种情况下,来自RDBMS的数据存储为
字段分隔符和
\n
行分隔符(默认值),这不是配置单元的默认分隔符。这就是为什么您的数据中会出现空条目

您可以使用两种方法解决此问题:

  • 更改配置单元表的字段分隔符

  • 在导入命令中使用以结尾的字段


首先,第二个命令不是配置单元导入命令,它将从MySQL获取数据到指定的HDFS
--target dir
。第二,获取空数据什么?当我访问hive中的表department_test时为空数据在第二种情况下,您正在使用
/user/hive/warehouse/department_test
位置创建表?