2015-07-20 38 views

回答

1

蜂房導入命令:
hive-import命令自動填充的元數據在蜂房metastore的填充表。如果Hive中的表尚不存在,則Sqoop 將根據爲您的表或查詢獲取的元數據來創建它。如果表已經存在,Sqoop會將數據導入到現有表中。如果您要創建一個新的Hive表,Sqoop會將源表中每列的數據類型轉換爲與Hive兼容的類型。
create-hive-table命令:
Sqoop可以基於現有關係數據源中的表生成配置單元表(使用create-hive-table命令)。如果設置,則如果目標配置單元表存在,則作業將失敗。默認情況下,該屬性爲false。

使用create-hive-table命令涉及到三步驟步驟:將數據導入到HDFS,創建配置表格,然後將HDFS數據加載到Hive中。這可以通過使用hive-import縮短爲一步。

hive-import期間,Sqoop將首先將HDFS導入到臨時位置。成功導入後,Sqoop會生成兩個查詢:一個用於創建表格,另一個用於從臨時位置加載數據。您可以使用--target-dir--warehouse-dir參數指定任何臨時位置。

添加了對上面的描述

使用create-蜂房-table命令低於例如:
包括三個步驟:

  1. 從RDBMS導入數據到HDFS

    sqoop import --connect jdbc:mysql://localhost:3306/hadoopexample --table employees --split-by empid -m 1;

  2. 使用create-hive-table命令

    sqoop create-hive-table --connect jdbc:mysql://localhost:3306/hadoopexample --table employees --fields-terminated-by ',';

  3. 將數據加載到蜂巢

    hive> load data inpath "employees" into table employees; Loading data to table default.employees Table default.employees stats: [numFiles=1, totalSize=70] OK Time taken: 2.269 seconds hive> select * from employees; OK 1001 emp1 101 1002 emp2 102 1003 emp3 101 1004 emp4 101 1005 emp5 103 Time taken: 0.334 seconds, Fetched: 5 row(s)

使用蜂巢導入命令創建蜂巢表:

sqoop import --connect jdbc:mysql://localhost:3306/hadoopexample --table departments --split-by deptid -m 1 --hive-import;

+2

我認爲從用戶指南複製並粘貼並不是特別有用。 –

+0

感謝賽基蘭對你的好解釋。 –

+0

但是,當我嘗試多次使用此命令,我沒有得到像表一樣的錯誤已存在..這是我試過的commnad .. sqoop create-hive-table --connect jdbc:mysql:// localhost: 3306/TestDB -username root -password root --table tb2; ..請你解釋一下「create-hive-table命令涉及三個步驟」是什麼意思。你可以給我一些示例命令嗎?再次感謝:) –

1

不同的是,創造蜂箱表將在蜂巢根據數據庫中的源表創建表,但會傳輸任何數據。命令「import --hive-import」將在Hive中創建表並從源表導入數據。

+0

謝謝Jarek .. :)。 –

+0

這是否創建一個內部或外部表? – zsad512