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的主要内容,如果未能解决你的问题,请参考以下文章

通过 SQOOP 连接到 DB2 时出现连接管理器错误

通过 Hortonworks Sandbox 上的 sqoop 连接到 Oracle

尝试在 C# 中连接到 Oracle DB 时出现问题

在 C++ 中使用 Qt 在 Linux 上连接到 Oracle DB

Sqoop oracle 连接问题

从 Java 连接到 Oracle DB 时出错