首页 > 解决方案 > 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)

标签: scalaapache-spark

解决方案


我查看了: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


推荐阅读