Apache spark Pyspark无法从AWS S3检索数据

Apache spark Pyspark无法从AWS S3检索数据,apache-spark,amazon-s3,pyspark,Apache Spark,Amazon S3,Pyspark,我得到以下错误: Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.collectAndServe. : java.io.IOException: No FileSystem for scheme: s3n ... 当我试图从S3检索数据时。我的spark defaults.conf有以下行: spark.jars /Users/lrezende/Desktop

我得到以下错误:

Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.collectAndServe.
: java.io.IOException: No FileSystem for scheme: s3n ...
当我试图从S3检索数据时。我的
spark defaults.conf
有以下行:

spark.jars      /Users/lrezende/Desktop/hadoop-aws-2.9.0.jar
这个文件在我的桌面上

我的代码是:

from pyspark.sql import SparkSession
if spark:
    spark.stop()

spark = SparkSession\
        .builder\
        .master("<master-address>")\
        .appName("Test")\
        .getOrCreate()

spark.sparkContext.setLogLevel('ERROR')
lines = spark.sparkContext.textFile("s3n://bucket/something/2017/*")
lines.collect()
从pyspark.sql导入SparkSession
如果火花:
spark.stop()
火花=火花会话\
建筑商先生\
.master(“”)\
.appName(“测试”)\
.getOrCreate()
spark.sparkContext.setLogLevel('错误')
lines=spark.sparkContext.textFile(“s3n://bucket/something/2017/*”)
collect()行
当我运行de
lines.collect()时,我得到了错误

有人能帮我解决这个问题吗?

如果你使用的是Spark的新(ish)版本——也可以说是Hadoop——你需要使用
s3a
而不是
s3n
URI模式。

毕竟我的“问题”很容易解决。我已经在我的
spark defaults.conf
中添加了以下行:

spark.jars.packages com.amazonaws:aws-java-sdk:1.10.34,org.apache.hadoop:hadoop-aws:2.9.0
每次我重新导入Jupyter笔记本中的所有LIB,但我没有尝试重新启动Jupyter服务,这仍然有点混乱,因为每次我创建会话时都会修复它,然后读取conf
,它会尝试下载所需的包。为什么它以前没有呢

无论如何,感谢大家抽出时间。

与答案相关: