设置常量边界查询
Set a constant boundary query
我正在使用 Sqoop 将 MySQL 表导入 HDFS。为此,我使用了自由格式查询导入。
--query "SELECT $query_select FROM $table where $CONDITIONS"
由于 min(id) 和 max(id) 搜索,此查询非常慢。为了提高性能,我决定使用 --boundary-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 '\"'
有人已经met/solved遇到过这个问题吗?谢谢
这样试试..
--boundary-query "select 176862848, 172862848 from tablename limit 1" \
我已经通过删除以下参数解决了这个问题:
--incremental append --check-column $id_column_name --last-value $last_value
参数--boundary-query、--check-column、--split-by和--incremental append之间似乎存在并发性
你是对的..
我们不应该将 --split-by 与 --boundary-query 控制参数一起使用。
我正在使用 Sqoop 将 MySQL 表导入 HDFS。为此,我使用了自由格式查询导入。
--query "SELECT $query_select FROM $table where $CONDITIONS"
由于 min(id) 和 max(id) 搜索,此查询非常慢。为了提高性能,我决定使用 --boundary-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 '\"'
有人已经met/solved遇到过这个问题吗?谢谢
这样试试..
--boundary-query "select 176862848, 172862848 from tablename limit 1" \
我已经通过删除以下参数解决了这个问题:
--incremental append --check-column $id_column_name --last-value $last_value
参数--boundary-query、--check-column、--split-by和--incremental append之间似乎存在并发性
你是对的..
我们不应该将 --split-by 与 --boundary-query 控制参数一起使用。