无法使用sqoop将数据从oracle导入hdfs

rqdpfwrv  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(585)

我正在尝试使用以下命令将数据从oracle xe数据库导入hdfs:

  1. sudo sqoop import -connect jdbc:oracle:thin:system/system@192.xxx.xx.x:1521:xe -username system -P -table employee -columns "ID" -target-dir sqoopoutput1 -m 1

但是,它抛出异常,表示找不到表。

  1. Warning: /usr/lib/sqoop/../accumulo does not exist! Accumulo imports will fail.
  2. Please set $ACCUMULO_HOME to the root of your Accumulo installation.
  3. 17/08/28 00:05:41 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6-cdh5.8.0
  4. Enter password:
  5. 17/08/28 00:05:44 INFO oracle.OraOopManagerFactory: Data Connector for Oracle and Hadoop is disabled.
  6. 17/08/28 00:05:44 INFO manager.SqlManager: Using default fetchSize of 1000
  7. 17/08/28 00:05:44 INFO tool.CodeGenTool: Beginning code generation
  8. 17/08/28 00:05:48 INFO manager.OracleManager: Time zone has been set to GMT
  9. 17/08/28 00:05:49 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM "employee" t WHERE 1=0
  10. 17/08/28 00:05:49 ERROR manager.SqlManager: Error executing statement: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist
  11. java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist
  12. at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:221)
  13. at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:118)
  14. at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:224)
  15. at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:468)
  16. at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:418)
  17. at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1085)
  18. at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
  19. at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:1033)
  20. at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:1140)
  21. at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1472)
  22. at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3875)
  23. at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3945)
  24. at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:4514)
  25. at org.apache.sqoop.manager.SqlManager.execute(SqlManager.java:777)
  26. at org.apache.sqoop.manager.SqlManager.execute(SqlManager.java:786)
  27. at org.apache.sqoop.manager.SqlManager.getColumnInfoForRawQuery(SqlManager.java:289)
  28. at org.apache.sqoop.manager.SqlManager.getColumnTypesForRawQuery(SqlManager.java:260)
  29. at org.apache.sqoop.manager.SqlManager.getColumnTypes(SqlManager.java:246)
  30. at org.apache.sqoop.manager.ConnManager.getColumnTypes(ConnManager.java:327)
  31. at org.apache.sqoop.orm.ClassWriter.getColumnTypes(ClassWriter.java:1861)
  32. at org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1661)
  33. at org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:107)
  34. at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:488)
  35. at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:615)
  36. at org.apache.sqoop.Sqoop.run(Sqoop.java:143)
  37. at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
  38. at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179)
  39. at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)
  40. at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)
  41. at org.apache.sqoop.Sqoop.main(Sqoop.java:236)
  42. 17/08/28 00:05:49 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: No columns to generate for ClassWriter
  43. at org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1667)
  44. at org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:107)
  45. at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:488)
  46. at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:615)
  47. at org.apache.sqoop.Sqoop.run(Sqoop.java:143)
  48. at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
  49. at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179)
  50. at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)
  51. at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)
  52. at org.apache.sqoop.Sqoop.main(Sqoop.java:236)

表存在于xe数据库中(我尝试了不带引号的表名,这与sqoop尝试查询的方式不同)

  1. select * from employee

请帮忙。

f45qwnt8

f45qwnt81#

使用大写的表名。

  1. sqoop import -connect jdbc:oracle:thin:system/system@192.xxx.xx.x:1521:xe -username system -P -table EMPLOYEE -columns "ID" -target-dir sqoopoutput1 -m

相关问题