尝试从 EKS 上的 EMR(使用托管端点)在 Pyspark 内核上运行以下代码,我尝试设置一些 s3a 相关的 Spark 配置,但似乎不起作用
from pyspark.sql import SparkSession
# Create a SparkSession
spark = SparkSession.builder \
.appName("S3 Read Example") \
.getOrCreate()
spark.conf.set("spark.hadoop.fs.s3a.path.style.access", "true")
spark.conf.set("fs.s3a.acl.default", "BucketOwnerFullControl")
spark.conf.set("spark.hadoop.fs.s3a.aws.credentials.provider", "com.amazonaws.auth.WebIdentityTokenCredentialsProvider")
# Read data from S3 using the s3a path
s3_path = "s3a://bucket/file.parquet"
df = spark.read \
.format("parquet") \
.load(s3_path)
spark.stop()
并出现以下错误。有人可以帮忙找出问题吗?
Py4JJavaError:调用 o119.load 时发生错误。
: org.apache.hadoop.fs.s3a.AWSClientIOException:s3a://com.bucket.name/file-path/file.snappy.parquet 上的 getFileStatus:com.amazonaws.SdkClientException:无法执行 HTTP 请求:
我尝试应用以下 Spark-defaults Spark.conf.set("spark.hadoop.fs.s3a.path.style.access", "true") Spark.conf.set("fs.s3a.acl.default", "BucketOwnerFullControl") Spark.conf.set(“spark.hadoop.fs.s3a.aws.credentials.provider”,“com.amazonaws.auth.WebIdentityTokenCredentialsProvider”) Spark.conf.set("fs.s3a.impl","com.amazon.ws.emr.hadoop.fs.EmrFileSystem")
不确定是否是 Spark 配置问题。
我们如何使用 EKS 上的 EMR 读取 Spark 3 上的 s3a 路径?