2016-06-13 6 views
0

私はSqoopを使ってMySQLテーブルをHDFSにインポートしています。これを行うために、私は自由形式のクエリインポートを使用します。定数境界クエリを設定する

--query "SELECT $query_select FROM $table where \$CONDITIONS" 

min(id)とmax(id)検索のためにこのクエリは非常に遅いです。パフォーマンスを向上させるために、私は - boundaryary-queryを使用し、手動で下限と上限を指定することに決めました。 (https://www.safaribooksonline.com/library/view/apache-sqoop-cookbook/9781449364618/ch04.html):

--boundary-query "select 176862848, 172862848" 

しかし、sqoopが規定値を気にし、再び自身が最小値と最大値「ID」を見つけようとしません。

16/06/13 14:24:44 INFO tool.ImportTool: Lower bound value: 170581647 
16/06/13 14:24:44 INFO tool.ImportTool: Upper bound value: 172909234 

完全sqoopコマンド:

sqoop-import -fs hdfs://xxxxxxxxx/ -D mapreduce.map.java.opts=" -Duser.timezone=Europe/Paris" -m $nodes_number\ 
    --connect jdbc:mysql://$server:$port/$database --username $username --password $password\ 
    --target-dir $destination_dir --boundary-query "select 176862848, 172862848"\ 
    --incremental append --check-column $id_column_name --last-value $last_value\ 
    --split-by $id_column_name --query "SELECT $query_select FROM $table where \$CONDITIONS"\ 
    --fields-terminated-by , --escaped-by \\ --enclosed-by '\"' 

は、誰もがすでに満たしている/この問題を解決していますか?おかげ

+0

自分の質問に編集として回答するのではなく、回答として回答してください。あなたはそれを受け入れることができます。 – Rob

答えて

0

正しいです..

--split-by--boundary-query制御引数を使用しないでください。

+0

- boundary-query制御引数で--split-byを使用しない理由は何ですか? – Farooque

0

はこのようにしてみてください。..

--boundary-query "select 176862848, 172862848 from tablename limit 1" \ 
+0

このクエリは私と同じ結果につながります。 しかし、私は を削除することによって、私の問題を解決するために管理し '--incrementalアペンド--check-列の$ id_column_name --last-値$ LAST_VALUE' それは、これらの引数の間の並行性があると思われます - split-by引数と--boundary-query引数。 – theudbald

0

私は、次の引数を削除することによってこの問題を解決するために管理してきました:

--incremental append --check-column $id_column_name --last-value $last_value 

引数の間の並行性があると思われ--boundary -query、--check-column、--split-by、--incremental append

関連する問題