2016-07-30 16 views
2

sqoopを使用してすべてのテーブルをディレクトリの1つにインポートしようとしましたが、テーブルの1つにプライマリキーがありません。私たちはただそこに単一のテーブルimport.Isのために私が指定することができる方法を--split-byを使用することができることを理解 sqoop import without primary key in RDBMSSqoopを使用してテーブルをインポート中に主キーエラー

を見て

Error during import: No primary key could be found for table departments_export. Please specify one with --split-by or perform a sequential import with '-m 1'.

sqoop import-all-tables --connect "jdbc:mysql://quickstart.cloudera/retail_db" 
--username=retail_dba 
--password=cloudera 
--warehouse-dir /user/cloudera/sqoop_import/ 

私は、次のエラーを取得していますImport-all-tablesコマンドの場合は--splity-byです。プライマリキーなしで複数テーブルのインポートに複数のマッパーを使用できる方法はありますか?

答えて

8

あなたが--autoreset-to-one-mapperを使用する必要があります。主キーなし

テーブルがデフォルトのマッパーと主キーを持つ1つのマッパーなどとインポートされます(4からsqoopコマンドで指定されていない場合)

  • として、 @JaimeCrあなたがimport-all-tables--split-byを使用することはできませんと述べたが、あなたが得たエラーのコンテキストでsqoopガイドからこれだけの引用:

    If a table does not have a primary key defined and the --split-by> <col> is not provided, then import will fail unless the number of mappers is explicitly set to one with the --num-mappers 1 or --m 1 option or the --autoreset-to-one-mapper option is used.

  • オプション--autoreset-to-one-mapperは、スキーマの主キーがないテーブルを自動的に処理するために、ツールimport-all-tablesで通常使用されます。

    sqoop import-all-tables --connect "jdbc:mysql://quickstart.cloudera/retail_db" \ 
    --username=retail_dba \ 
    --password=cloudera \ 
    --autoreset-to-one-mapper \ 
    --warehouse-dir /user/cloudera/sqoop_import/ 
    
+0

おかげで、私は、そのオプションを知りませんでした。 –