Spark Shell依赖异常

use*_*805 1 scala apache-spark

我的主机系统是Windows 10,我有cloudera vm,我的spark版本是1.6。我试图使用以下命令加载spark-shell。

spark-shell --packages org.apache.spark:spark-streaming-twitter_2.10:1.6.0
Run Code Online (Sandbox Code Playgroud)

但是它抛出以下异常:

:::: 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)
Run Code Online (Sandbox Code Playgroud)

::使用详细或调试消息级别获取更多详细信息线程中的异常

"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)
Run Code Online (Sandbox Code Playgroud)

dev*_*ost 8

我查看了以下内容: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
Run Code Online (Sandbox Code Playgroud)

当我重新运行命令以用我的软件包启动PySpark时:

pyspark --packages com.databricks:spark-csv_2.10:1.5.0
Run Code Online (Sandbox Code Playgroud)

立即检测到我指定的TLS版本。从字面上看,它给了我输出:

捡起JAVA_TOOL_OPTIONS:-Dhttps.protocols = TLSv1.2