访问阿里云OSS

更新时间:
复制为 MD 格式

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.confDataWorks配置中添加以下配置项:

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,并添加到类路径中。

    1. 如图所示,进入File > Project Structure

      image

    2. 如图所示,左侧选择Modules,点击+,添加JARs or Directories

      image

    3. 添加JindoSDK lib 目录下的所有 JAR 文件。

    4. 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.confDataWorks配置中添加以下配置项:

    spark.hadoop.odps.cupid.trusted.services.access.list=${BucketName}.oss-${RegionId}-internal.aliyuncs.com

步骤五:提交任务

./bin/spark-submit --class xxx spark-app.jar