我正在尝试使用spark-shell
从S3读取ORC文件,遵循以下指南:
Read ORC files directly from Spark shell
我已将路径定义为s3a://...
不幸的是,这会导致抛出以下异常:
java.lang.NoSuchMethodError: org.apache.http.conn.ssl.SSLConnectionSocketFactory.<init>(Ljavax/net/ssl/SSLContext;Ljavax/net/ssl/HostnameVerifier;)V
at com.amazonaws.http.conn.ssl.SdkTLSSocketFactory.<init>(SdkTLSSocketFactory.java:56)
...
我已经通过以下命令在spark-shell中导入了jar文件,试图纠正丢失的方法,但无济于事。
spark-shell --jars /home/admin/Downloads/httpclient4.5.2.jar,
/home/admin/Downloads/httpclient-4.5.2.jar,
/home/admin/Downloads/hadoop-common-2.6.0.jar,
/home/admin/Downloads/hadoop-aws-2.6.0.jar,
/home/admin/Downloads/aws-java-sdk-1.11.41.jar
我怀疑spark有自己的SSLConnectionSocketFactory
副本,因为即使在排除SSLConnectionSocketFactory
选项时我也可以导入--jars
。
除了创建一个maven项目之外(这是另一个令人头疼的问题,因为我遇到了问题),无论如何我可以解决这个错误,其中Spark声称SSLConnectionSocketFactory无法初始化?
答案 0 :(得分:1)
我注意到某些Spark版本与某些AWS版本不兼容。例如,使用Spark 1.6和hadoop 2.6,我不得不使用AWS 1.10.77(我遇到了同样的问题)。