Vla*_*rin 6 amazon-s3 amazon-web-services apache-spark pyspark
我正在使用 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)
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
py4j.protocol.Py4JJavaError: An error occurred while calling o26.csv.
: org.apache.hadoop.fs.UnsupportedFileSystemException: No FileSystem for scheme "s3"
Run Code Online (Sandbox Code Playgroud)
我知道我需要添加特殊的库,但我没有找到任何具体的信息以及哪个版本。我尝试将类似的内容添加到我的代码中,但仍然遇到相同的错误:
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'
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
hadoop-awsSpark 3需要使用3.2.0版本。--packages指定hadoop-aws库足以从S3读取文件。
--packages org.apache.hadoop:hadoop-aws:3.2.0
Run Code Online (Sandbox Code Playgroud)
您需要设置以下配置。
spark._jsc.hadoopConfiguration().set("fs.s3a.access.key", "<access_key>")
spark._jsc.hadoopConfiguration().set("fs.s3a.secret.key", "<secret_key>")
Run Code Online (Sandbox Code Playgroud)
之后您可以读取 CSV 文件。
spark.read.csv("s3a://bucket/file.csv")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6030 次 |
| 最近记录: |