การนำเข้า 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:

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 ข้อมูล INFO.Job: งาน job_local349901698_0001 ทำงานในโหมด uber : false 17/11/01 09:32:24 mapreduce ข้อมูลงาน: แผนที่ 0% ลด 0% 17/11/01 09 :32:24 mapreduce ข้อมูลงาน: งาน job_local349901698_0001 ล้มเหลวด้วยสถานะล้มเหลวเนื่องจาก: NA 17/11/01 09:32:24 mapreduce ข้อมูลงาน: ตัวนับ: 8 Map-Reduce Framework บันทึกอินพุตแผนที่ = 2 บันทึกผลลัพธ์แผนที่ = 2 ไบต์แยกอินพุต=87 บันทึกที่หกรั่วไหล=0 การสับเปลี่ยนที่ล้มเหลว=0 เอาต์พุตแผนที่ที่ผสาน=0 รูปแบบอินพุตไฟล์ ตัวนับไบต์ที่อ่าน=0 รูปแบบเอาต์พุตของตัวนับ ไบต์ที่เขียน=164 - person Kumar; 01.11.2017
comment
17/11/01 09:32:24 คำเตือน mapreduce.Counters: Group FileSystemCounters เลิกใช้แล้ว ใช้ org.apache.hadoop.mapreduce.FileSystemCounter แทน 17/11/01 09:32:24 INFO mapreduce.ImportJobBase: ถ่ายโอน 0 ไบต์ใน 3.8506 วินาที (0 ไบต์/วินาที) 17/11/01 09:32:24 mapreduce INFO .ImportJobBase: ดึงข้อมูล 2 รายการ 17/11/01 09:32:24 เครื่องมือข้อผิดพลาด ImportTool: เกิดข้อผิดพลาดระหว่างการนำเข้า: งานนำเข้าล้มเหลว! ไม่พบปัญหา โปรดช่วยในเรื่องเดียวกัน - person Kumar; 01.11.2017