Apache spark Spark作业首次尝试连接到oracle失败

Apache spark Spark作业首次尝试连接到oracle失败,apache-spark,apache-spark-2.0,Apache Spark,Apache Spark 2.0,我们正在运行spark作业,它连接到oracle并获取一些数据。始终尝试0或1个JDBCRDD任务失败,错误如下。在随后的尝试中,任务完成。正如在少数门户网站中所建议的那样,我们甚至尝试了-Djava.security.egd=file:///dev/urandom java选项,但它没有解决问题。有人能帮我们解决这个问题吗 ava.sql.SQLRecoverableException: IO Error: Connection reset by peer, Authentication la

我们正在运行spark作业,它连接到oracle并获取一些数据。始终尝试0或1个JDBCRDD任务失败,错误如下。在随后的尝试中,任务完成。正如在少数门户网站中所建议的那样,我们甚至尝试了-Djava.security.egd=file:///dev/urandom java选项,但它没有解决问题。有人能帮我们解决这个问题吗

ava.sql.SQLRecoverableException: IO Error: Connection reset by peer, Authentication lapse 59937 ms.
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:794)
    at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:688)

这个异常与ApacheSpark无关,“SQLRecoverableException:IO Error:”只是Oracle JDBC驱动程序报告它的连接 数据库管理系统在使用时被关闭。真正的问题在于 DBMS,例如会话突然终止。请检查数据库管理系统 错误日志并与问题共享

你可以在这里找到类似的问题
问题只与java.security.egd有关。通过命令行设置,即-Djava.security.egd=file:///dev/urandom 无法工作,因此我通过作业中的system.setproperty设置它。在该作业不再提供SQLRecoverableException之后,最快的方法是在运行作业之前导出spark系统变量spark\u SUBMIT\u OPTS

如下所示:
export SPARK\u SUBMIT\u OPTS=-Djava.security.egd=file:dev/uradom
我正在使用docker,所以对我来说完整的命令是:

docker exec -it spark-master 
bash -c "export SPARK_SUBMIT_OPTS=-Djava.security.egd=file:dev/urandom && 
/spark/bin/spark-submit --verbose --master spark://172.16.9.213:7077 /scala/sparkjob/target/scala-2.11/sparkjob-assembly-0.1.jar"
  • 导出变量
  • 提交作业

  • 上述解决方案还解决了sqlcl未连接到Oracle并引发身份验证失效错误的问题。要通过命令行进行设置,由于jdk错误,实际上需要-Djava.security.egd=file:/dev//uradom