类 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 更改为s3ns3a。都没有用。

知道如何让它工作吗? 我在为 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类

30根据官方教程详解嵌套类内部类静态嵌套类局部类匿名类 ...

Java 静态成员类 非静态的成员类 局部类 匿名类

JavaSE基础(十 三 )---<内部类>成员内部类,静态内部类,局部内部类,匿名内部类,内部类的意义