我正在尝试使用 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:调用 o20.parquet 时出错。
: java.lang.RuntimeException: java.lang.ClassNotFoundException: 找不到类 org.apache.hadoop.fs.s3native.NativeS3FileSystem
我设置了 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
更改为 s3n
、s3a
。都没有用。
知道如何让它发挥作用吗? 我在 Windows 10、pySpark、为 Hadoop 2.6.0 构建的 Spark 1.6.1
最佳答案
我正在运行 pyspark 附加来自 hadoop-aws 的库。
您需要在输入路径中使用 s3n。我正在从 Mac-OS 运行它。所以我不确定它是否适用于 Windows。
$SPARK_HOME/bin/pyspark --packages org.apache.hadoop:hadoop-aws:2.7.1
关于windows - 找不到类 org.apache.hadoop.fs.s3native.NativeS3FileSystem (Spark 1.6 Windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37070919/