我正在使用Sqoop將MySQL表導入HDFS。爲此,我使用自由格式的查詢導入。設置恆定邊界查詢
--query "SELECT $query_select FROM $table where \$CONDITIONS"
由於min(id)和max(id)搜索,此查詢非常慢。爲了提高性能,我決定使用 - 邊界查詢並指定手動下限和上限。 (https://www.safaribooksonline.com/library/view/apache-sqoop-cookbook/9781449364618/ch04.html):
--boundary-query "select 176862848, 172862848"
然而,sqoop不關心指定的值,然後再次嘗試通過自身尋找最小和最大的「身份證」。
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 '\"'
有誰已經遇到了/解決了這個問題?由於
不要回答自己的問題作爲編輯,而是將其作爲答案。你可以接受。 – Rob