Sqoop инкрементный порядок импорта аргументов? - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь импортировать добавочную нагрузку, используя sqoop из mysql.Ниже приведена команда, которую я запускаю на консоли Unix:

    sqoop job \
    --create sample_job --import -Dmapred.job.queue.name=realtime \
    --connect jdbc:mysql://hostname/db?zeroDateTimeBehavior=convertToNull \
    --driver com.mysql.jdbc.Driver \
    --table SAMPLE_TABLE -m 1 \
    --username tony \
    --password stark \
    --incremental lastmodified \
    --check-column ts \
    --last-value 2018-04-24 \
    --target-dir /some/tmp/location/ \
    --map-column-hive XYZ=tinyint \
    --null-string '\\N' \
    --null-non-string '\\N'

Но, получая типичную ошибку аргумента:

     /usr/hdp/2.6.4.0-91//sqoop/conf/sqoop-env.sh: line 21: HADOOP_CLASSPATH=${hcat -classpath}: bad substitution
     Warning: /usr/hdp/2.6.4.0-91/accumulo does not exist! Accumulo imports will fail.
     Please set $ACCUMULO_HOME to the root of your Accumulo installation.
     18/04/25 11:24:52 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6.2.6.4.0-91
     18/04/25 11:24:52 ERROR tool.BaseSqoopTool: Error parsing arguments for job:

Я нашел много доступных ресурсов, которые показывают, как выполнить импорт сКоманды, но большинство источников не показывают точные командные строки и передают неправильные аргументы.Я где-то видел, что порядок аргументов имеет значение, и поэтому попытался изменить порядок, но не сработал.Это простая проблема, так что может кто-нибудь сказать мне правильный синтаксис?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

Работает сейчас.Параметр должен быть передан во время exec, и порядок должен быть следующим:

sqoop job -Dmapred.job.queue.name=realtime --meta-connect "jdbc:hsqldb:file:/tmp/sqoop-meta.db;shutdown=true" -exec
0 голосов
/ 25 апреля 2018

Я думаю, что у вас есть проблемы с вашим синтаксисом.https://sqoop.apache.org/docs/1.4.0-incubating/SqoopUserGuide.html#id1769640

$ sqoop job --create myjob -- import --connect jdbc:mysql://example.com/db \
--table mytable
enter code here

Между первым параметром есть пробел, замените вашу команду пробелом перед параметром импорта.

sqoop job \
--create sample_job -- import -Dmapred.job.queue.name=realtime \
--connect jdbc:mysql://hostname/db?zeroDateTimeBehavior=convertToNull \
--driver com.mysql.jdbc.Driver \
--table SAMPLE_TABLE -m 1 \
--username tony \
--password stark \
--incremental lastmodified \
--check-column ts \
--last-value 2018-04-24 \
--target-dir /some/tmp/location/ \
--map-column-hive XYZ=tinyint \
--null-string '\\N' \
--null-non-string '\\N'
...