类 org.apache.hadoop.fs.s3native.NativeS3FileSystem 未找到(Spark 1.6 Windows)
Posted
技术标签:
【中文标题】类 org.apache.hadoop.fs.s3native.NativeS3FileSystem 未找到(Spark 1.6 Windows)【英文标题】:Class org.apache.hadoop.fs.s3native.NativeS3FileSystem not found (Spark 1.6 Windows) 【发布时间】:2016-05-06 11:11:23 【问题描述】:我正在尝试使用 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
更改为s3n
、s3a
。都没有用。
知道如何让它工作吗? 我在为 Hadoop 2.6.0 构建的 Windows 10、pySpark、Spark 1.6.1 上
【问题讨论】:
【参考方案1】:我正在运行从 hadoop-aws 附加库的 pyspark。
您需要在输入路径中使用 s3n。我正在从 Mac-OS 运行它。所以我不确定它是否可以在 Windows 中运行。
$SPARK_HOME/bin/pyspark --packages org.apache.hadoop:hadoop-aws:2.7.1
【讨论】:
它在 Linux 中对我很有帮助。【参考方案2】:这个包声明即使在 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")
【讨论】:
以上是关于类 org.apache.hadoop.fs.s3native.NativeS3FileSystem 未找到(Spark 1.6 Windows)的主要内容,如果未能解决你的问题,请参考以下文章
找不到 Spark 和 Cassandra Java 应用程序异常提供程序 org.apache.hadoop.fs.s3.S3FileSystem
S3N 和 S3A distcp 在 Hadoop 2.6.0 中不起作用
JavaSE基础六----<常用类>Math类Random类|System类,Date类Calendar类SimpleDateFormat类,BigInteger类BigDecimal类