2016-07-12 137 views
0

我試圖從SQL Server數據庫導入數據到Hive。基本上我將整個數據庫(除了一些表格)導入Hive。在這裏,我有一些問題,我無法從任何地方得到答案。使用SQOOP從RDBMS導入數據

  1. 我們可以使用「--hive-import」和import-all-tables和--exclude-tables。 ?如果沒有,一旦我將所有表格加載到hfds中,如何使用create external table選項爲所有表格構建元數據?
  2. 我們可以在sqoop import命令的任何位置指定配置單元數據庫名稱嗎? ?

謝謝。

回答

0

關於你的問題。

  1. 號 作爲Apache文件中提到: 「在--exclude桌參數是+僅sqoop-進口的所有桌」。見下面Apache的文檔(搜索報價」。 https://sqoop.apache.org/docs/1.4.4/SqoopUserGuide.html#_syntax

2.Yes。下面是一個例子。

import-all-tables --connect ${connectString} --username ${username} -- password ${password} --hive-home /opt/hive --hive-database ${database} -- verbose --hive-import --hive-drop-import-delims -m 1 
+0

謝謝。那麼在那種情況下,一旦我將表加載到hdfs,我如何爲已經在hdfs中的多個文件創建外部表? –

+0

我認爲你可以使用「--exclude-tables」導入所有表格,指定「--hive-database」。所有表格將在Hive中自動創建。如果您不使用「--hive-import」,則必須手動創建外部表。 – NangSaigon

0

對於來自RDBMS數據導入到外部蜂巢表中,您需要遵循

1)使用Sqoop創建外部蜂巢表(必須創建所有表)。 2)導入數據。(這可以使用shell腳本來完成)

準備一個包含DBNAME.TABLENAME列表的輸入文件。 shell腳本將該文件作爲輸入,逐行迭代併爲每行執行sqoop語句。

while read line; 
do 

    DBNAME=`echo $line | cut -d'.' -f1` 
    tableName=`echo $line | cut -d'.' -f2` 


    sqoop import -Dmapreduce.job.queuename=$QUEUE_NAME --connect '$JDBC_URL;databaseName=$DBNAME;username=$USERNAME;password=$PASSWORD' --table $tableName --target-dir $HIVE_EXTERNAL_TABLE_PATH/$tableName --fields-terminated-by '\001' -m 1 


done<inputFile