2017-08-02 8 views
0

sqoopを使用してmysqlデータベースのテストからhadoopにデータをインポートしようとしています。しかし、プライマリといくつかのテーブルを持ついくつかのテーブルでは、プライマリキーがありません。sqoopを使用してRDBMSからすべてのテーブルをインポート

$sqoop import-all-tables --connect jdbc:mysql://192.168.0.101/mysql -username test -P --warehouse-dir /home/user_all_tables 

17/08/01午後十時46分54秒ERROR tool.ImportAllTablesTool:インポート中のエラー: 主キーは、テーブルgeneral_log見つかりませんでした。 --split-byで を指定するか、 '-m 1'で順次インポートしてください。

sqoopコマンドラインでsplit byを使用する方法を教えてください。

答えて

0

有用であるimport-all-tablesツールについては、次の条件を満たす必要があります

  • 各テーブルは、単一列の主キーを持たなければなりません。
  • 各テーブルのすべての列をインポートする必要があります。
  • デフォルト以外の分割カラムを使用したり、WHERE句で条件を指定したりすることはできません。

デフォルトオプションは非プライマリキーテーブルに適合しないため、動作しません。ここでは、-m 1オプションを使用してインポートを1つのマッパーでのみ厳密にすることを提案します。

Sqoopコマンド:

import-all-tables --connect jdbc:mysql://192.168.0.101/mysql -username test \ 
-P --warehouse-dir /home/user_all_tables -m 1 
+0

は、代わりに-m 1つのマッパーを設定する別のオプションを試すことができサンディープ – DevPerson

+0

ありがとうございました。 --spilt-byを使用し、一意の値を持つ列を指定します。 – kumsgs

+0

@kumsgs - はい!その場合、 '--split-by 'で指定する整数列を調べるためにすべての非プライマリキーテーブルを調べなければならない –

関連する問題