MaxCompute Spark支持通过集成Jindo SDK来访问阿里云OSS。Jindo SDK是一款专为Hadoop/Spark生态系统设计的高性能OSS客户端,它提供了针对阿里云OSS深度优化的Hadoop FileSystem实现。
步骤一:配置OSS实现类和Endpoint
使用本地模式时应使用对应地域的外网Endpoint,集群模式下应使用内网Endpoint,参考地域和Endpoint。
Spark 3.5+(默认集成JindoSDK 6.5版本)配置如下:
spark.hadoop.fs.AbstractFileSystem.oss.impl=com.aliyun.jindodata.oss.JindoOSS spark.hadoop.fs.oss.impl=com.aliyun.jindodata.oss.JindoOssFileSystem spark.hadoop.fs.oss.endpoint=oss-${RegionId}-internal.aliyuncs.com其他版本(若使用JindoSDK 3.7版本)配置如下:
spark.hadoop.fs.AbstractFileSystem.oss.impl=com.aliyun.emr.fs.oss.OSS spark.hadoop.fs.oss.impl=com.aliyun.emr.fs.oss.JindoOssFileSystem spark.hadoop.fs.oss.endpoint=oss-${RegionId}-internal.aliyuncs.com
步骤二:配置鉴权信息
支持以下两种鉴权方式,任选其一进行配置。
方式一:直接使用AccessKey ID/AccessKey Secret
在spark-defaults.conf或DataWorks配置中添加以下配置项:
spark.hadoop.fs.oss.accessKeyId=${AccessId}
spark.hadoop.fs.oss.accessKeySecret=${AccessKey}方式二:使用STS Token
参考STS模式执行授权,然后添加以下配置项。
Spark 3.5+配置
## 在spark-defaults.conf或Dataworks配置项中添加以下配置项:
spark.hadoop.fs.oss.credentials.provider=com.aliyun.jindodata.oss.auth.CustomCredentialsProvider
spark.hadoop.aliyun.oss.provider.url=http://localhost:10011/sts-token-info?user_id=${AliyunUid}&role=${RoleName}其他版本配置
## 在spark-defaults.conf或Dataworks配置项中添加以下配置项:
spark.hadoop.odps.cupid.http.server.enable=true
spark.hadoop.fs.jfs.cache.oss.credentials.provider=com.aliyun.emr.fs.auth.CustomCredentialsProvider
spark.hadoop.aliyun.oss.provider.url=http://localhost:10011/sts-token-info?user_id=${AliyunUid}&role=${RoleName}步骤三:引用JindoSDK依赖(Spark 3.5+可跳过该步骤)
本地模式
本地模式需下载JindoSDK,并添加到类路径中。
如图所示,进入File > Project Structure

如图所示,左侧选择
Modules,点击+,添加JARs or Directories。
添加JindoSDK
lib目录下的所有 JAR 文件。在IDEA单击OK,确认添加。
集群模式
如果是版本为Spark3.5,服务端自带jindo-sdk,无需添加。
其他版本,需修改
spark-defaults.conf,增加如下配置项后可直接使用以下公共资源:spark.hadoop.odps.cupid.resources = public.jindofs-sdk-3.7.2.jar ## 注意:若需要使用其他版本JindoSDK,请下载对应版本SDK后上传到Project中,再通过spark.hadoop.odps.cupid.resources引用。
步骤四:网络白名单配置
默认情况下无需设置即可直接访问。
集群模式下,如发现无法访问,需要将目标Bucket域名添加到作业白名单中,在
spark-defaults.conf或DataWorks配置中添加以下配置项:spark.hadoop.odps.cupid.trusted.services.access.list=${BucketName}.oss-${RegionId}-internal.aliyuncs.com
步骤五:提交任务
./bin/spark-submit --class xxx spark-app.jar该文章对您有帮助吗?