Hadoop: sqoop: получение неизвестной ошибки выборки базы данных, даже если база данных существует

#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, не уверен, почему команда импорта завершается ошибкой.

Я попытался выполнить следующее:

  1. предоставьте все привилегии таблице customer.
  2. удалите номер порта в URL-адресе —connect.
  3. попробовал 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;