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