Передача свойств mysql через sqoop eval
Команда sqoop eval:
sqoop eval --connect 'jdbc:mysql://<connection url>' --driver com.mysql.jdbc.Driver --query "select max(rdate) from test.sqoop_test"
дает мне вывод:
Предупреждение: /usr/hdp/2.3.2.0-2950/accumulo не существует! Импорт Accumulo потерпит неудачу. Пожалуйста, установите $ACCUMULO_HOME в корневой каталог вашей установки Accumulo. Предупреждение: /usr/hdp/2.3.2.0-2950/zookeeper не существует! Импорт Accumulo потерпит неудачу. Пожалуйста, установите $ZOOKEEPER_HOME в корневой каталог вашей установки Zookeeper. 16/10/05 18:38:17 ИНФОРМАЦИЯ sqoop.Sqoop: Запуск версии Sqoop: 1.4.6.2.3.2.0-2950 16/10/05 18:38:17 WARN tool.BaseSqoopTool: Установка пароля в команде линия небезопасна. Попробуйте вместо этого использовать -P. 16/10/05 18:38:17 ПРЕДУПРЕЖДЕНИЕ sqoop.ConnFactory: для параметра --driver задан явный драйвер, однако соответствующий менеджер соединений не устанавливается (через --connection-manager). Sqoop собирается вернуться к org.apache.sqoop.manager.GenericJdbcManager. Пожалуйста, укажите явно, какой менеджер соединений следует использовать в следующий раз. 16/10/05 18:38:17 INFO manager.SqlManager: Использование fetchSize по умолчанию 1000 -------------- | max(rdate) | -------------- | 2014-01-25 |
но я хочу вывод без предупреждения и границы таблицы, такие как:
max (rdate) 2014-01-25
я в основном хочу сохранить этот вывод в файл. заранее спасибо
3 ответа
Вы можете выполнить Sqoop Import
операция по сохранению вывода в HDFS.
Предупреждения прямо вперед.
Вы можете установить
$ACCUMULO_HOME
,$ZOOKEEPER_HOME
если доступно.Вы можете установить
--connection-manager
соответствующий MysqlВ целях безопасностирекомендуется использовать
-P
для пароля, а не для записи в команде.
Это не ошибки, вы можете жить с этими предупреждениями.
Вы можете создать файл.sh, записать в него свои команды sqoop, а затем запустить его как shell_file_name.sh > your_output_file.txt
У нас есть два способа получить результаты запроса:
Другой способ - вы можете писать в HDFS, импортируя результаты запроса (- target-dir / path) и читая оттуда.
Вы можете изменить параметр файловой системы в команде sqoop, чтобы сохранить результаты запроса импорта, поэтому идея заключается в том, чтобы импортировать данные в локальную файловую систему, а не в HDFS.
Например: sqoop import -fs local -jt local --connect "строка подключения" --username root --password корневой запрос "Выбрать * из таблицы" --target-dir / home / output
https://sqoop.apache.org/docs/1.4.0-incubating/SqoopUserGuide.html