本文为您介绍使用Spark访问OSS时需要的相关配置。

OSS Endpoint配置

调试时请使用OSS服务所在地域的外网Endpoint,提交集群需替换为VPC内网Endpoint。详情请参见访问域名和数据中心

OSS访问方式配置

  • 以AccessKey ID和AccessKey Secret方式访问OSS。
    spark.hadoop.fs.oss.accessKeyId = xxxxxx
    spark.hadoop.fs.oss.accessKeySecret = xxxxxx
    spark.hadoop.fs.oss.endpoint = oss-xxxxxx-internal.aliyuncs.com
  • 以StsToken的方式访问OSS。

    以AccessKey ID和AccessKey Secret方式访问OSS,需要明文将AccessKey ID和AccessKey Secret写在配置中,存在一定的安全风险。因此建议您以StsToken的方式访问OSS。

    1. 单击一键授权,将当前云账号的OSS资源通过StsToken的方式授权给MaxCompute项目直接访问。
      说明 当MaxCompute的ProjectOwner为OSS云账号时,才可以执行一键授权。
    2. 获取roleArn。
      1. 登录RAM控制台
      2. 在左侧导航栏上,单击RAM角色管理
      3. RAM角色管理页面,搜索AliyunODPSDefaultRole。
      4. 单击AliyunODPSDefaultRole,在基本信息区域获取ARN。格式为acs:ram::xxxxxxxxxxxxxxx:role/aliyunodpsdefaultrole
    3. 在Spark配置中添加如下内容即可访问OSS资源。
      # 此配置表明Spark是通过StsToken去访问OSS资源。
      spark.hadoop.fs.oss.credentials.provider=org.apache.hadoop.fs.aliyun.oss.AliyunStsTokenCredentialsProvider
      
      # 此配置是一键授权后产生的一个roleArn。
      spark.hadoop.fs.oss.ststoken.roleArn=acs:ram::xxxxxxxxxxxxxxx:role/aliyunodpsdefaultrole
      
      # 此配置是OSS资源对应的VPC访问Endpoint。
      spark.hadoop.fs.oss.endpoint=oss-cn-hangzhou-internal.aliyuncs.com

网络白名单配置

spark.hadoop.odps.cupid.vpc.domain.list = {"regionId":"xxxxxx", "vpcs":[{"zones":[{"urls":[{ "domain":"bucketname.oss-xxxxxx-internal.aliyuncs.com", "port":80} ] }]}]}