scala - spark shell 依赖异常
问题描述
我的主机系统 Windows 10,我有 cloudera vm,我的 spark 版本是 1.6。我试图用下面的命令加载 spark-shell。
spark-shell --packages org.apache.spark:spark-streaming-twitter_2.10:1.6.0
但它抛出了以下异常:
:::: ERRORS Server access error at url https://repo1.maven.org/maven2/org/apache/spark/spark-streaming-twitter_2.10/1.6.0/spark-streaming-twitter_2.10-1.6.0.pom (javax.net.ssl.SSLException: Received fatal alert: protocol_version)
Server access error at url https://repo1.maven.org/maven2/org/apache/spark/spark-streaming-twitter_2.10/1.6.0/spark-streaming-twitter_2.10-1.6.0.jar (javax.net.ssl.SSLException: Received fatal alert: protocol_version)
:: USE VERBOSE OR DEBUG MESSAGE LEVEL FOR MORE DETAILS 线程异常
"main" java.lang.RuntimeException: [unresolved dependency: org.apache.spark#spark-streaming-twitter_2.10;1.6.0: not found] at org.apache.spark.deploy.SparkSubmitUtils$.resolveMavenCoordinates(SparkSubmit.scala:1067) at org.apache.spark.deploy.SparkSubmit$.prepareSubmitEnvironment(SparkSubmit.scala:287) at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:154) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121) at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
解决方案
我查看了:javax.net.ssl.SSLException:收到致命警报:protocol_version
因此,它似乎与 Java TLS 协议版本默认值有关。如果 Java 版本过时并导致通过 HTTPS 的请求的 TLS 版本过时,则会被阻止。我在尝试安装 PySpark 包时遇到了这个问题。许多服务器现在阻止过时的 TLS 版本。参见,例如:Github 现在阻止弱加密标准
解决方案是使用环境变量强制 TLS 版本 1.2:
echo 'export JAVA_TOOL_OPTIONS="-Dhttps.protocols=TLSv1.2"' >> ~/.bashrc
source ~/.bashrc
当我重新运行命令以使用我的包启动 PySpark 时:
pyspark --packages com.databricks:spark-csv_2.10:1.5.0
我指定的 TLS 版本立即被检测到。它确实给了我输出:
拿起JAVA_TOOL_OPTIONS:-Dhttps.protocols=TLSv1.2
推荐阅读
- database - 可以将 mLab 用作大型 Web 应用程序的数据库吗?
- python - 如何在 Tensorflow 中绘制精度曲线
- c++ - 如何在 ConsoleApplication 项目 C++ 中添加窗口
- docker - docker Ubuntu 镜像的用例是什么
- git - GitKraken 在树的顶部显示旧提交
- java - Java IndexOutOfBoundsException 列表错误
- c# - 如何获取内容使用 HtmlAgilityPack - C#
- java - 语法 Antlr Java - 识别“立即执行”
- robotframework - 机器人框架:如何排序
- javascript - 触发/打开链接而不在 HTML 中打开它