2016-10-22 157 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命令。