You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Spark访问Ozone存储系统中的数据

Spark访问Ozone存储数据的操作指南

前置准备

操作前需确认你已经拿到了和集群Ozone版本完全匹配的Ozone文件系统依赖包(通常名为ozone-filesystem-hadoop<你的Hadoop大版本号>.jar),同时确保Spark运行环境的Hadoop版本和Ozone编译使用的Hadoop版本兼容,避免出现类冲突问题。

方式1:通过spark-shell访问

启动spark-shell时可以直接通过参数注入Ozone相关配置,示例启动命令如下:

spark-shell \
# 配置Ozone文件系统实现类
--conf spark.hadoop.fs.o3fs.impl=org.apache.hadoop.fs.ozone.OzoneFileSystem \
# 配置Ozone Manager地址,若已经把ozone-site.xml放到Spark的conf目录下可省略该配置
--conf spark.hadoop.ozone.om.address=<你的OM节点IP/域名>:9862 \
# 引入Ozone依赖包
--jars /本地路径/ozone-filesystem-hadoop3.jar

启动成功后即可直接通过o3fs协议路径读写Ozone上的数据,示例代码如下:

// 读取Ozone上的csv文件
val df = spark.read.csv("o3fs://<桶名>.<卷名>.ozone/数据文件路径.csv")
// 查看数据内容
df.show()
// 写入处理后的数据到Ozone
df.write.mode("overwrite").parquet("o3fs://<桶名>.<卷名>.ozone/保存路径/")

方式2:通过spark-submit提交作业访问

提交作业时将Ozone相关配置通过参数传入即可,以下是PySpark作业的提交示例:

spark-submit \
--master yarn \
--deploy-mode cluster \
--conf spark.hadoop.fs.o3fs.impl=org.apache.hadoop.fs.ozone.OzoneFileSystem \
--conf spark.hadoop.fs.AbstractFileSystem.o3fs.impl=org.apache.hadoop.fs.ozone.OzFs \
--conf spark.hadoop.ozone.om.address=<你的OM节点IP/域名>:9862 \
# 如果是cluster模式,依赖包会自动分发到executor节点
--jars /本地路径/ozone-filesystem-hadoop3.jar \
你的作业脚本.py

如果是提交Scala/Java开发的Spark作业,只需要调整最后部分为Jar包路径和主类参数即可,配置部分完全一致。

注意事项

  • 依赖版本必须严格对齐:Ozone文件系统依赖的版本要和集群部署的Ozone服务版本完全一致,否则会出现RPC调用不兼容、类不存在等异常
  • 路径格式要正确:Ozone的o3fs路径固定格式为o3fs://<桶名>.<卷名>.ozone/,如果启动时配置了spark.hadoop.fs.defaultFS为Ozone路径,可以直接写相对路径
  • 权限问题:Spark作业的运行用户需要提前申请对应Ozone卷、桶的读写权限,否则会触发权限拒绝错误
  • 如果已经把ozone-site.xml放到Spark的conf目录下,启动时不需要再单独指定OM地址等集群配置,Spark会自动读取配置文件
  • YARN cluster模式下要确保依赖包能被所有executor节点加载,要么通过--jars参数提交,要么提前把Ozone依赖包放到所有节点的Spark类路径下

内容的提问来源于stack exchange,提问作者Ranga Reddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 09:06:02