我们正在运行连接到oracle并获取一些数据的spark作业。始终尝试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)
答案 0 :(得分:1)
问题仅在于java.security.egd。通过命令行设置它,即-Djava.security.egd = file:/// dev / urandom不起作用,所以我通过system.setproperty在job中设置它。在那个工作之后不再给出SQLRecoverableException
答案 1 :(得分:0)
此异常与Apache Spark无关,“SQLRecoverableException:IO Error:”只是Oracle JDBC驱动程序报告它的连接 DBMS在使用时从它下面关闭了。真正的问题在于 DBMS,例如会话突然死亡。请检查DBMS 错误记录并与问题分享。
你可以在这里找到Similer问题 https://access.redhat.com/solutions/28436
答案 2 :(得分:0)
最快的方法是在运行作业之前导出spark系统变量SPARK_SUBMIT_OPTS。
像这样:export SPARK_SUBMIT_OPTS=-Djava.security.egd=file:dev/urandom
我正在使用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"