【发布时间】:2022-01-12 02:16:47
【问题描述】:
我想使用 PySpark 从 S3 读取文件(本地安装,而不是 EMR)。问题是它在读取时冻结,没有任何超时或错误。
版本:
- PySpark 3.2.2
- Hadoop 3.3.1
- Hadoop-AWS 3.3.1 .jar
- AWS Java SDK 捆绑包 1.12.136 .jar(也尝试了 1.11.901)
JAR 文件直接放在SPARK_HOME/jars 目录中,所以我不需要在这里单独指定它们(这种方法适用于我的其他具有其他 JAR 依赖项的 Spark 作业)。
我的 PySpark 代码:
from pyspark.sql import SparkSession
# filled in code
aws_access_key_id = ""
aws_secret_access_key = ""
spark = (
SparkSession
.builder
.appName("Test S3 app")
.config("spark.hadoop.fs.s3a.access.key", aws_access_key_id)
.config("spark.hadoop.fs.s3a.secret.key", aws_secret_access_key)
.config("spark.hadoop.fs.s3a.endpoint", "eu-central-1.amazonaws.com")
.getOrCreate()
)
# here the execution hangs
df = spark.read.parquet("s3a://bucket/file.parquet")
df.show()
我能用这个做什么?我见过this question,但那里没有解决方案。
使用与 boto3 相同的凭据和 S3 路径可以在不到一秒的时间内完成并下载文件。
【问题讨论】:
标签: amazon-web-services apache-spark amazon-s3 hadoop pyspark