未找到类org.apache.hadoop.fs.s3native.NativeS3FileSystem(Spark 1.6 Windows)

时间:2016-05-06 11:11:23

标签: windows amazon-s3 apache-spark windows-10 pyspark

我正在尝试使用pySpark从本地spark上下文访问s3文件。 我一直在File "C:\Spark\python\lib\py4j-0.9-src.zip\py4j\protocol.py", line 308, in get_return_value py4j.protocol.Py4JJavaError: An error occurred while calling o20.parquet. : java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.fs.s3native.NativeS3FileSystem not found

我设置了os.environ['AWS_ACCESS_KEY_ID']和 在我致电os.environ['AWS_SECRET_ACCESS_KEY']之前df = sqc.read.parquet(input_path)。我还添加了这些行: hadoopConf.set("fs.s3.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem") hadoopConf.set("fs.s3.awsSecretAccessKey", os.environ["AWS_SECRET_ACCESS_KEY"]) hadoopConf.set("fs.s3.awsAccessKeyId", os.environ["AWS_ACCESS_KEY_ID"]) 我也尝试将s3更改为s3ns3a。两者都没有。

知道如何让它发挥作用吗? 我在Windows 10,pySpark,Spark 1.6.1上为Hadoop 2.6.0构建

2 个答案:

答案 0 :(得分:6)

我正在运行pyspark,附加来自 hadoop-aws 的库。

您需要在输入路径中使用 s3n 。我是从Mac-OS运行的。所以我不确定它是否适用于Windows。

$SPARK_HOME/bin/pyspark --packages org.apache.hadoop:hadoop-aws:2.7.1

答案 1 :(得分:0)

此包声明甚至可以在spark-shell中使用

  

spark-shell --packages org.apache.hadoop:hadoop-aws:2.7.1

并在shell中指定

  

sc.hadoopConfiguration.set(“fs.s3n.awsAccessKeyId”,“xxxxxxxxxxxxx”)     sc.hadoopConfiguration.set(“fs.s3n.awsSecretAccessKey”,“xxxxxxxxxxxxxxxxx”)