运行简单的sqoop以列出Oracle目录中的表时出现问题。我正在使用CDH 5.5.1
目录下面有一个jar文件ojdbc6.jar:
/var/lib/sqoop
当我运行一个简单的sqoop来列出表时:
sqoop list-tables --connect jdbc:oracle:thin@host_name:port/database_name --username user_name --password passwd
or,
sqoop list-tables --connect jdbc:oracle:thin@host_name:port:database_name --username user_name --password passwd
我得到错误:
Warning: /opt/cloudera/parcels/CDH-5.5.1-1.cdh5.5.1.p0.11/bin/../lib/sqoop/../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
16/10/28 14:04:39 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6-cdh5.5.1
16/10/28 14:04:39 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.
16/10/28 14:04:39 INFO oracle.OraOopManagerFactory: Data Connector for Oracle and Hadoop is disabled.
16/10/28 14:04:39 INFO manager.SqlManager: Using default fetchSize of 1000
16/10/28 14:04:39 ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.NullPointerException
java.lang.NullPointerException
at org.apache.sqoop.manager.OracleManager.listTables(OracleManager.java:759)
at org.apache.sqoop.tool.ListTablesTool.run(ListTablesTool.java:49)
at org.apache.sqoop.Sqoop.run(Sqoop.java:143)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179)
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)
at org.apache.sqoop.Sqoop.main(Sqoop.java:236)
谢谢。
答案 0 :(得分:0)
检查完一些文档后,我看到您指定的选项是sqoop选项。 Sqoop2由脚本作为第一个参数运行,或者基于SqoopShell类的源在交互模式下运行(在GrepCode上检查它)。 现在,当您有第一个参数时,它会尝试查找并打开列表表作为包含sqoop2命令的脚本文件,这些命令显然会因为您没有这样的文件而失败。
尝试使用sqoop而不是sqoop2运行,同样的命令应该最有效。
在您之后更新:
在异常处检查source code之后,当时几乎有一件事可能为null,连接对象,这意味着此方法前面的getConnection()调用因此获得了null,进一步检查代码是不可能的,这意味着,在尝试建立连接时抛出了SQLException,并且由于catch中的NPE而保持隐藏。
检查您的数据库日志,连接字符串等...特别是因为您正在使用-P选项,并且仍然在输出中收到有关它的警告。