之前写了一篇如何让spark使用阿里云oss对象存储替代本地存储或者hdfs存储jar包,日志等,文章链接:spark对接oss对象存储
今天写一篇比较通用的,即spark对接aws s3或者其他厂商兼容s3接口的对象存储。
环境
spark环境:
spark-3.1.3-bin-hadoop3.2
hadoop源码:
hadoop3.2
添加jar包
我使用的是spark-3.1.3-bin-hadoop3.2这个spark环境。默认的版本中是没有s3的相关jar包的,因此只能使用hdfs或者local。
在hadoop源码中(https://github.com/apache/hadoop),有一个hadoop-tools文件夹,下面放着的都是hadoop周边衍生工具代码,比如hadoop-aliyun是hadoop对接aliyun的,再比如hadoop-aws是hadoop对接aws的。
我们通过编译hadoop代码,可以在hadoop-aws/target下面得到hadoop-aws-3.2.0.jar,这个jar包还依赖aws-java-sdk-bundle-1.11.375.jar,这个jar包在hadoop-aws/target/lib下面。将这两个jar包,放到spark-3.1.3-bin-hadoop3.2/jars下面。
因为我是基于k8s提交spark作业,所以将s

本文介绍了如何让Spark使用Hadoop的aws模块连接到AWS S3或其他兼容S3接口的对象存储。首先,需要从Hadoop源码编译获取相关jar包并放入Spark的jars目录。接着,配置Spark的`spark-defaults.conf`,包括S3的访问密钥、秘密密钥、实现类和endpoint。若要启用日志存储,还需设置`spark.eventLog.enabled`和`spark.eventLog.dir`。对于不完全兼容S3的云服务商,可以通过修改`FileSystem.java`将所有前缀转换为`s3a`。
最低0.47元/天 解锁文章
403

被折叠的 条评论
为什么被折叠?



