java.sql.SQLException: Io 异常: NL 异常产生

Posted

技术标签:

【中文标题】java.sql.SQLException: Io 异常: NL 异常产生【英文标题】:java.sql.SQLException: Io exception: NL Exception was generated 【发布时间】:2020-01-31 22:53:49 【问题描述】:

我正在使用 spark-sql 2.4.1 尝试使用我的 spark 程序连接 oracle 数据库

火花程序

val o_url =//"jdbc:oracle:thin: etc ... it is correct and working
val query  ="( SELECT 1 FROM DUAL ) T";
val dfReader   = spark.read.format("jdbc")
       .option("url", o_url)
       .option("driver", "oracle.jdbc.OracleDriver")
       .option("user", "ABC")
       .option("password", "ZYX")
       .option("fetchsize","10000")

val ss = dfReader
                .option("inferSchema", true)
                .option("schema","LDF")
                .option("dbtable", query)
                .load();

println(" Table Count : "+ ss.count());
spark.close();

我在我的类路径中添加了“ojdbc14.jar”jar。

我遇到了错误

错误

java.sql.SQLException: Io exception: NL Exception was generated
  at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
  at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
  at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
  at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
  at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
  at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
  at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
  at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
  at org.apache.spark.sql.execution.datasources.jdbc.DriverWrapper.connect(DriverWrapper.scala:45)
  at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$createConnectionFactory$1.apply(JdbcUtils.scala:63)
  at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$createConnectionFactory$1.apply(JdbcUtils.scala:54)
  at org.apache.spark.sql.execution.datasources.jdbc.JDBCRDD$.resolveTable(JDBCRDD.scala:56)
  at org.apache.spark.sql.execution.datasources.jdbc.JDBCRelation.<init>(JDBCRelation.scala:115)
  at org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider.createRelation(JdbcRelationProvider.scala:52)
  at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:340)
  at org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:239)
  at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:227)
  at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:164)

这里有什么问题?如何解决这个问题?

【问题讨论】:

【参考方案1】:

它是与 val o_url =//"jdbc:oracle:thin: etc ...它是正确且有效的

早点

val o_url ="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)... ; ";

我通过删除“;”将其更正如下引号内。

val o_url ="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)... ";

【讨论】:

以上是关于java.sql.SQLException: Io 异常: NL 异常产生的主要内容,如果未能解决你的问题,请参考以下文章

java.sql.SQLException:Io 异常:指定了未知主机

java.sql.SQLException: Io 异常: Socket closed

java.sql.SQLException: Io 异常: Broken pipe 如何在不重启的情况下恢复?

java.sql.SQLException: Io 异常: Socket read timed out

java.sql.SQLException:Io 异常:在与 oracle 的 JDBC 连接期间从读取调用中得到减一

java.sql.SQLException: Io 异常: Got minus one from a read call