2016-06-13 5 views
0

Я использую Sqoop для импорта таблиц MySQL в HDFS. Для этого я использую импорт запросов свободной формы.Установить постоянный граничный запрос

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

Этот запрос довольно медленный из-за минимального (id) и максимального (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 '\"' 

Кто-нибудь уже встречался/решить эту проблему? Благодаря

+0

Не отвечайте на свой вопрос как на редактирование, но ставьте его как ответ. Тогда вы можете принять это. – Rob

ответ

0

Вы правильно ..

Мы не должны использовать --split-by с --граничный запрос контрольный аргумент.

+0

в чем причина отсутствия использования --split-by с аргументом управления --граничным запросом – Farooque

0

попробовать, как это ..

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

Этот запрос приводит к тому же результату, что и мой. Однако, мне удалось решить мою проблему, удалив '--incremental Append --check колонки $ id_column_name --last значение $ last_value' кажется, что существует параллелизм между этими аргументами, то - аргумент split-by и аргумент --граничный запрос. – theudbald

0

мне удалось решить эту проблему, удалив следующие аргументы:

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

Кажется, что существует параллелизм между аргументами --boundary -query, --check колонки, --split-на и --incremental добавить

Смежные вопросы