Импорт sqoop не идентифицирует таблицы mysql, показывая ошибку ClassNotFountException

У меня есть таблица mysql «клиенты», и я попытался импортировать данные из mysql в местоположение hdfs, используя импорт sqoop. Ниже приведены версии, которые я установил на свой компьютер: версия sqoop: 1.4.6 версия hive: 2.3.0 версия Hadoop: 2.8.1

Команда импорта Sqoop:

sqoop import --connect jdbc:mysql://localhost/localdb --username root --password mnbv@1234 --table customers -m 1 --target-dir /user/hduser/sqoop_import/customers1/

и показано ниже ClassNotFountException:

Tue Oct 31 09:57:21 IST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.17/10/31 09:57:21 INFO db.DBInputFormat: Using read commited transaction isolation             17/10/31 09:57:21 INFO mapred.MapTask: Processing split: 1=1 AND 1=1 
17/10/31 09:57:21 INFO mapred.LocalJobRunner: map task executor complete. 
17/10/31 09:57:22 WARN mapred.LocalJobRunner: job_local1437452057_0001java.lang.Exception: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class customers not found 
at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:489
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:549)
Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class customers not found at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2216) 
at org.apache.sqoop.mapreduce.db.DBConfiguration.getInputClass(DBConfiguration.java:403)
at org.apache.sqoop.mapreduce.db.DataDrivenDBInputFormat.createDBRecordReader(DataDrivenDBInputFormat.java:237)
at org.apache.sqoop.mapreduce.db.DBInputFormat.createRecordReader(DBInputFormat.java:263)     at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.<init>(MapTask.java:515)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:758)     at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:270)     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149  
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748) 
Caused by: java.lang.ClassNotFoundException: Class customers not found     at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2122)
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2214)
... 12 more
17/10/31 09:57:22 INFO mapreduce.Job: Job job_local1437452057_0001 running in uber mode : false  17/10/31 09:57:22 INFO mapreduce.Job:  map 0% reduce 0%
17/10/31 09:57:22 INFO mapreduce.Job: Job job_local1437452057_0001 failed with state FAILED due to: NA  17/10/31 09:57:22 INFO mapreduce.Job: Counters: 0
17/10/31 09:57:22 WARN mapreduce.Counters: Group FileSystemCounters is deprecated. Use org.apache.hadoop.mapreduce.FileSystemCounter instead  17/10/31 09:57:22 INFO mapreduce.ImportJobBase: Transferred 0 bytes in 4.105 seconds (0 bytes/sec)
17/10/31 09:57:22 WARN mapreduce.Counters: Group org.apache.hadoop.mapred.Task$Counter is deprecated. Use org.apache.hadoop.mapreduce.TaskCounter instead  17/10/31 09:57:22 INFO mapreduce.ImportJobBase: Retrieved 0 records.
17/10/31 09:57:22 ERROR tool.ImportTool: Error during import: Import job failed!

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

sqoop list-tables --connect jdbc:mysql://localhost/localdb --username root --password mnbv@1234;

Вывод отображается правильно, как показано:

17/10/31 10:07:09 INFO manager.MySQLManager: Preparing to use a MySQL  streaming resultset.          
Tue Oct 31 10:07:09 IST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+,  5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not  using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true  and provide truststore for server certificate verification.                                                                                                customers

в чем может быть проблема, почему импорт sqoop из таблицы не распознает таблицу из mysql. Пожалуйста, помогите мне в том же.

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


person Kumar    schedule 31.10.2017    source источник


Ответы (1)


Используйте параметр  --bindir и укажите текущий рабочий каталог. В параметре --bindir укажите путь $SQOOP_HOME/lib.

Извините за поздний ответ.Ответ обновлен в соответствии с последним комментарием. Пожалуйста, проверьте следующее:

  • Файл jar необходимо проверить во время выполнения процесса sqoop в cmd: Writing jar file:/tmp/sqoop.../*.jar
  • Используйте команду импорта: sqoop import -fs local -jt local -libjars /tmp/..../*.jar --connect "jdbc:mysql://example.com/sqoop" --username <>--password <>--table customers
  • Проверьте сгенерированный файл Java для импорта sqoop. Она должна иметь
    то же имя, что и таблица, которую вы обычно импортируете. sqoop codegen --connect <""> --username <> --password <> --table customers

Надеюсь это поможет!

person Subash    schedule 31.10.2017
comment
17.11.01 09:32:24 ИНФОРМАЦИЯ mapreduce.Job: Job job_local349901698_0001 работает в режиме uber : false :32:24 INFO mapreduce.Job: Сбой задания job_local349901698_0001 с состоянием FAILED из-за: NA 17/11/01 09:32:24 INFO mapreduce.Job: Счетчики: 8 Map-Reduce Framework Входные записи карты = 2 Выходные записи карты = 2 Входные разделенные байты = 87 Перенесенные записи = 0 Неудачные перетасовки = 0 Объединенные выходные данные карты = 0 Счетчики форматов ввода файлов Прочитанные байты = 0 Счетчики форматов вывода файлов Записано байтов = 164 - person Kumar; 01.11.2017
comment
11.17.01 09:32:24 ПРЕДУПРЕЖДЕНИЕ mapreduce.Counters: Группа FileSystemCounters устарела. Вместо этого используйте org.apache.hadoop.mapreduce.FileSystemCounter .ImportJobBase: получены 2 записи. 17/11/01 09:32:24 ОШИБКА tool.ImportTool: Ошибка во время импорта: Не удалось выполнить задание импорта! Не удалось найти проблему, пожалуйста, помогите с тем же. - person Kumar; 01.11.2017