无法使用 jupterlab 的 pyspark 代码从 EKS 上的 EMR 读取 s3a 路径

问题描述 投票:0回答:0

尝试从 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 请求: 的证书与任何主题备用名称不匹配:[.s3.amazonaws.com、s3.amazonaws.com]:无法执行 HTTP 请求: 的证书与任何主题备用名称不匹配:[。 s3.amazonaws.com、s3.amazonaws.com]

我尝试应用以下 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 路径?

amazon-eks amazon-emr spark3 amazon-s3-access-points
© www.soinside.com 2019 - 2024. All rights reserved.