Sqoop - 尝试连接到 Oracle DB 服务器时出现 java.lang.NullPointerException
Posted
技术标签:
【中文标题】Sqoop - 尝试连接到 Oracle DB 服务器时出现 java.lang.NullPointerException【英文标题】:Sqoop - getting java.lang.NullPointerException when trying to connect to Oracle DB Server 【发布时间】:2015-04-02 16:50:36 【问题描述】:使用 Sqoop,我尝试连接到 Oracle DB,然后列出可用的数据库。 但是当我尝试执行命令时,我得到了 java.lang.NullPointerException
请找到我得到的命令和异常,如下所述:
[hadoop@njpas01 bin]$ ./sqoop list-databases --connect jdbc:oracle:thin@DEVDB1:1521 --username dev_user -P
Warning: $HADOOP_HOME is deprecated.
15/04/01 14:56:24 INFO sqoop.Sqoop: Running Sqoop version: 1.4.5
Enter password:
15/04/01 14:56:35 INFO oracle.OraOopManagerFactory: Data Connector for Oracle and Hadoop is disabled.
15/04/01 14:56:35 INFO manager.SqlManager: Using default fetchSize of 1000
15/04/01 14:56:35 ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.NullPointerException
java.lang.NullPointerException
at org.apache.sqoop.manager.OracleManager.listDatabases(OracleManager.java:695)
at org.apache.sqoop.tool.ListDatabasesTool.run(ListDatabasesTool.java:49)
at org.apache.sqoop.Sqoop.run(Sqoop.java:143)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
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)
没有防火墙问题。可以从我运行 Sqoop 命令的机器访问端口 1521。 Oracle 版本 - 11g 企业版。 ojdbc6.jar Oracle 连接器放置在 Sqoop lib 文件夹中。
请告诉我这个问题的原因。我用 SQL Server 做过类似的操作,成功列出数据库,将数据从 DB 导入 HDFS。但我在 Oracle DB 中面临这个问题。请帮忙。
谢谢。
【问题讨论】:
我对此进行了更多分析,发现 list-tables 命令将适用于下面提到的相同 Sqoop 命令。 sqoop list-tables --connect jdbc:oracle:thin@DEVDB1:1521 --username dev_user -P 您能向社区提交错误吗? issues.apache.org/jira/browse/SQOOP. 【参考方案1】:尝试使用 sqoop 命令连接到 oracle 数据库时遇到同样的错误。
在 sqoop 语句中,使用了从执行 sqoop 命令的节点无法访问的主机名。尝试以下命令检查您的 oracle 主机是否可以访问:
ping 主机名
如果你得到 ping:Unknown host,那么 sqoop 将无法连接到 oracle 服务器。
所以在 sqoop 语句中请求使用 IP 地址并确保下面的命令成功(得到响应)
ping IP 地址;
PING 10.xx.xx.xx (10.xx.xx.xx) 56(84) 字节数据。 来自 10.xx.xx.xx 的 64 个字节:icmp_seq=1 ttl=128 time=2.39 ms
更新ipadress后,我可以连接到oracle数据库了。
sqoop list-tables --connect jdbc:oracle:thin:@10.xx.xxx.xx:1521/dbname--username ur_username --password ur_password
【讨论】:
盲射入黑暗。 OP 明确指出:不存在防火墙问题。可以从我运行 Sqoop 命令的机器访问端口 1521。 所以连接不会是问题。以上是关于Sqoop - 尝试连接到 Oracle DB 服务器时出现 java.lang.NullPointerException的主要内容,如果未能解决你的问题,请参考以下文章
通过 Hortonworks Sandbox 上的 sqoop 连接到 Oracle