#hadoop #sqoop
#hadoop #sqoop
Вопрос:
Я делаю базовую попытку sqoop
. используя MySQL, я создал образец базы данных. Я создал таблицу customers в базе данных ‘sample’, вставил некоторые данные в таблицу.
При попытке импортировать таблицу в hdfs с помощью sqoop я получаю Unknown database 'sample'
, хотя база данных присутствует.
используемая команда sqoop:
sqoop import --connect "jdbc:mysql://localhost:3306/sample" --username root --password 123456 --table customers --target-dir hdfs:/sqoop/customers2 -m 1
но эта команда показывает клиента таблицы:
sqoop list-tables --connect "jdbc:mysql://localhost:3306/sample" --username root --password 123456"
Поскольку таблица и схема доступны и отлично работают для команды list-tables, не уверен, почему команда импорта завершается ошибкой.
Я попытался выполнить следующее:
- предоставьте все привилегии таблице customer.
- удалите номер порта в URL-адресе —connect.
- попробовал IP вместо localhost (выдает ошибку «Драйвер не получил никаких пакетов с сервера»)
Пожалуйста, предложите, в чем может быть проблема.
был бы благодарен за ваш ответ.
Журнал:
java.lang.RuntimeException: java.lang.RuntimeException: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'sample'
at org.apache.sqoop.mapreduce.db.DBInputFormat.setConf(DBInputFormat.java:167)
at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:62)
at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:117)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:722)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'sample'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
Комментарии:
1. Это распределенный кластер Hadoop? Кроме того, войдите в MySQL и проверьте, запущен ли он и
sample
существует ли база данных.2. visakh — его sudo распространяется. да, образец базы данных существует.
3. mysql также запущен.
4. Вы решили эту проблему позже? У меня была эта проблема только сейчас, потратив 30 минут, чтобы выяснить, что это просто из-за опечатки в имени базы данных …. ‘_’ и ‘-‘ слишком близко…
Ответ №1:
Попробуйте это, это сработает
импорт sqoop —подключение jdbc: mysql://localhost.localdomain/DVS_DB —имя пользователя hadoop —пароль hadoop — отдел таблиц —target-dir sqoop_dir/ —m 1;