2017-03-14 16 views
1

のrelevenceです:: =私はsqoopコマンドの下に実行しています-m 1

sqoop import --connect 'jdbc:sqlserver://10.xxx.xxx.xx:1435;database=RRAM_Temp' --username DRRM_DATALOADER --password ****** --table T_VND --hive-import --hive-table amitesh_db.amit_hive_test --as-textfile --target-dir amitesh_test_hive -m 1 

私は2つのクエリを持っている:: -

1)-m 1のrelevenceは何ですか?私が知っている限り、私がsqoopの仕事に割り当てているマッパーの数。それが本当であるならば、私は-m 2を割り当てた瞬間には、実行は以下のようにエラーを投げる開始:

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

さて、私は私の考え方を変えることを余儀なくしています、今私が見る、それはとは何かを持っていますデータベースの主キー。誰かが私の後ろに論理を助けることができますか?

2)上記のsqoopコマンドをテキストファイル形式で保存するように指示しました。しかし、実行時に提案された場所に行くと、tbl_name.jarが見つかります。なぜ、--as-textfileが間違ったsytaxであるなら、正しいものは何ですか?または、ファイルを見つけることができる他の場所がありますか?

答えて

0

1)1より大きい値に設定する-m又は--num-mappersを有するために、テーブルは、PRIMARY KEYまたはsqoopコマンドが--split-byカラムを備えていなければならない必要がありますのいずれか。 Controlling Parallelismはこれの背後にある論理を説明します。ハイブテーブルamit_hive_testにインポートデータの

2) FileFormatは、プレーンテキスト(--as-textfile)であろう。これは--hive-importであるため、データはまず--target-dirにインポートされ、次にHiveテーブルにロードされます(LOAD DATA INPATH)。得られたデータは、表のLOCATION内にあり、--target-dirには含まれません。

関連する問題