首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Spark 3.0.0对S3进行读写?

如何使用Spark 3.0.0对S3进行读写?
EN

Stack Overflow用户
提问于 2020-07-24 22:08:29
回答 2查看 1.9K关注 0票数 3

我正在尝试使用Kubernetes上的Spark Operator和pySpark版本3.0.0启动一个能够对S3进行读写的Spark应用程序。Spark Operator运行得很好,但我很快意识到启动的应用程序无法正确读取S3中的文件。

此命令:

spark.read.json("s3a://bucket/path/to/data.json")

抛出此异常:

代码语言:javascript
复制
py4j.protocol.Py4JJavaError: An error occurred while calling o58.json.
java.lang.RuntimeException: java.lang.ClassNotFoundException: 
Class org.apache.hadoop.fs.s3a.S3AFileSystem not found

我首先尝试使用gcr.io/spark-operator/spark-py:v3.0.0作为Spark镜像,然后尝试向其中添加一些.jars,但没有成功:

代码语言:javascript
复制
ADD https://repo1.maven.org/maven2/org/apache/httpcomponents/httpclient/4.5.9/httpclient-4.5.9.jar $SPARK_HOME/jars
ADD https://repo1.maven.org/maven2/org/apache/hadoop/hadoop-aws/2.7.4/hadoop-aws-2.7.4.jar $SPARK_HOME/jars
ADD https://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk/1.7.4/aws-java-sdk-1.7.4.jar $SPARK_HOME/jars

这是我的spark会议:

代码语言:javascript
复制
    "spark.hadoop.fs.s3a.endpoint": "S3A_ENDPOINT"
    "spark.hadoop.fs.s3a.access.key": "ACCESS_KEY"
    "spark.hadoop.fs.s3a.secret.key": "SECRET_KEY"
    "spark.hadoop.fs.s3a.connection.ssl.enabled": "false"
    "spark.hadoop.fs.s3a.impl": "org.apache.hadoop.fs.s3a.S3AFileSystem"
    "spark.hadoop.fs.s3a.path.style.access": "true"
    "spark.driver.extraClassPath": "/opt/spark/jars/*"
    "spark.executor.extraClassPath": "/opt/spark/jars/*"

我的$SPARK_HOME/opt/spark

有没有人能用Spark 3.0.0读写S3?这是pyspark独有的问题吗?我该如何“修复”这个问题呢?提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2020-07-28 05:10:40

我想出了如何做到这一点:下面是我对基础docker镜像所做的更改(只有几处更改):

https://github.com/Coqueiro/spark/tree/branch-3.0-s3我创建了一个Makefile来帮助创建发行版,但我基本上只是遵循了官方文档:

http://spark.apache.org/docs/latest/building-spark.html

此外,这是已经构建并推送到Docker Hub的镜像:https://hub.docker.com/repository/docker/coqueirotree/spark-py

它支持Spark 3.0.0,Hadoop3.2.0,S3A和Kubernetes。

票数 3
EN

Stack Overflow用户

发布于 2020-07-24 22:13:42

您是否尝试过使用具有预先构建的Hadoop库https://spark.apache.org/downloads.html的spark jars,您还可以将Hadoop依赖项添加到您的类路径中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63075293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档