2016-07-12 6 views
0

SQLサーバーデータベースからHiveにデータをインポートしようとしています。基本的には、データベース全体(一部のテーブルを除く)をHiveにインポートしています。ここで私はどこからでも答えられないいくつかの質問があります。SQOOPを使用したRDBMSからのデータのインポート

  1. import - all-tablesと--exclude-tablesで "--hive-import"を使用できますか? ?そうでない場合は、すべてのテーブルをhfdsにロードしたら、すべてのテーブルのメタデータを作成するために外部テーブルの作成オプションを使用するにはどうすればよいですか?
  2. ハイブのデータベース名は、sqoop importコマンドのどこにでも指定できますか? ?

ありがとうございます。

答えて

0

ご質問について。 Apacheのドキュメントで説明したように

  1. 号 : "--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"でimport-all-tablesを使うことができ、 "--hive-database"を指定することができると思います。すべてのテーブルはHiveで自動的に作成されます。 "--hive-import"を使用しない場合は、外部表を手動で作成する必要があります。 – NangSaigon

0

RDBMSから外部ハイブテーブルにデータをインポートするためにあなたが従う必要があり

1)外部ハイブテーブルを作成します。(すべてのテーブルを作成する必要があります)。 2)Sqoopを使用してデータをインポートします(これはシェルスクリプトを使用して行うことができる)

DBNAME.TABLENAMEのリストを持つ入力ファイルを準備します。 シェルスクリプトはこのファイルを入力とし、行単位で繰り返し実行し、行ごとに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 
関連する問題