我正在使用 Apache Spark 3.1.0 和 Python 3.9.6。我正在尝试从 AWS S3 存储桶读取 csv 文件,如下所示:
spark = SparkSession.builder.getOrCreate()
file = "s3://bucket/file.csv"
c = spark.read\
.csv(file)\
.count()
print(c)
但我收到以下错误:
py4j.protocol.Py4JJavaError: An error occurred while calling o26.csv.
: org.apache.hadoop.fs.UnsupportedFileSystemException: No FileSystem for scheme "s3"
我知道我需要添加特殊的库,但我没有找到任何具体的信息以及哪个版本。我尝试将类似的内容添加到我的代码中,但仍然遇到相同的错误:
import os
os.environ['PYSPARK_SUBMIT_ARGS'] = '--packages com.amazonaws:aws-java-sdk:1.7.4,org.apache.hadoop:hadoop-aws:2.7.3 pyspark-shell'
我怎样才能解决这个问题?
你需要使用hadoop-aws
Spark 3 的版本 3.2.0。--packages
指定hadoop-aws
库足以从 S3 读取文件。
--packages org.apache.hadoop:hadoop-aws:3.2.0
您需要设置以下配置。
spark._jsc.hadoopConfiguration().set("fs.s3a.access.key", "<access_key>")
spark._jsc.hadoopConfiguration().set("fs.s3a.secret.key", "<secret_key>")
之后您可以读取 CSV 文件。
spark.read.csv("s3a://bucket/file.csv")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)