2016-10-22 177 views
-1

第一个命令: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 \ 
–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,那么为什么命令在第二种情况下,我们变得空和不在第一种情况下

+0

首先第二个命令不是hive导入命令,它会从MySQL获取数据到指定的HDFS'--target-dir'。其次,获得NULL是什么? –

+0

当我在配置单元中访问表department_test时发生空数据 –

+0

您在第二种情况下使用'/ user/hive/warehouse/department_test'位置创建表? –

回答

0

蜂巢的默认分隔符

  • 场:CTRL+A
  • LINE:\n

案例1:HIVE IMPORT

导入表到蜂巢(采用蜂巢的默认分隔符,如果没有设置)

而且,它会创建--hive-table(如果不存在)中提到的表格,并使用配置单元的默认分隔符。

情况2:HDFS IMPORT

在这种情况下,从RDBMS数据被存储为,字段分隔符和\n行定界符(默认)这对于蜂巢默认定界符。这就是为什么你要在你的数据中获得NULL条目。

你可以用两种方式解决这个问题:

  • 更改您的蜂巢表的字段分隔符

  • 使用--fields-terminated-by在IMPORT命令。