Pyspark无法从AWS S3检索数据

时间:2018-02-23 19:23:14

标签: 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/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()

当我运行de lines.collect()时,我收到错误。

有人可以帮我修理吗?

2 个答案:

答案 0 :(得分:1)

如果您使用的是新的(ish)版本的Spark - 而且是传统的,Hadoop - 您需要使用s3a而不是s3n URI方案。

答案 1 :(得分:0)

毕竟我的问题&#34;很容易解决。我已经在我的spark-defaults.conf中添加了以下行:

spark.jars.packages com.amazonaws:aws-java-sdk:1.10.34,org.apache.hadoop:hadoop-aws:2.9.0

每次我重新导入Jupyter笔记本中的所有libs,但我没有尝试过重启Jupyter服务,这仍然有点令人困惑,因为每次我创建会话后修复它{{ 1}}被读取并尝试下载所需的包。为什么以前没有呢?

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