全部产品
Search
文档中心

MaxCompute:Akses OSS dari Spark pada MaxCompute

更新时间:Jul 02, 2025

Topik ini menjelaskan cara mengakses Object Storage Service (OSS) dari Spark pada MaxCompute.

Konfigurasi titik akhir OSS

Gunakan titik akhir publik wilayah tempat OSS berada saat men-debug fitur. Gunakan titik akhir internal wilayah tersebut saat mengirimkan pekerjaan di lingkungan produksi. Untuk informasi lebih lanjut, lihat Wilayah dan Titik Akhir.

Konfigurasi metode akses OSS

  • Akses OSS menggunakan ID AccessKey dan Rahasia AccessKey dari akun.
    spark.hadoop.fs.oss.accessKeyId = xxxxxx
    spark.hadoop.fs.oss.accessKeySecret = xxxxxx
    spark.hadoop.fs.oss.endpoint = oss-xxxxxx-internal.aliyuncs.com
  • Akses OSS menggunakan Token Layanan Keamanan (STS).

    Jika Anda mengakses OSS menggunakan ID AccessKey dan Rahasia AccessKey dari akun, Anda harus mengonfigurasi ID AccessKey dan Rahasia AccessKey dalam teks biasa. Ini menimbulkan risiko keamanan. Kami merekomendasikan agar Anda mengakses OSS menggunakan token STS.

    1. Pergi ke halaman Cloud Resource Access Authorization dan klik Konfirmasi Kebijakan Otorisasi. Kemudian, Proyek MaxCompute dapat mengakses sumber daya OSS dari akun Alibaba Cloud saat ini menggunakan token STS.
      Catatan Anda hanya dapat memberikan otorisasi kepada proyek MaxCompute untuk mengakses sumber daya OSS dengan metode ini jika pemilik proyek MaxCompute adalah akun Alibaba Cloud yang memiliki sumber daya OSS yang akan diakses.
    2. Dapatkan Nama Sumber Daya Cloud Alibaba (ARN) dari peran yang diasumsikan oleh Spark pada MaxCompute.
      1. Masuk ke Konsol Resource Access Management (RAM).
      2. Di panel navigasi kiri, pilih Identitas > Roles.
      3. Di halaman Roles, cari AliyunODPSDefaultRole.
      4. Di hasil pencarian, klik AliyunODPSDefaultRole di kolom Nama Peran. Di halaman yang muncul, dapatkan nilai ARN di bagian Basic Information. Nilainya dalam format acs:ram::xxxxxxxxxxxxxxx:role/aliyunodpsdefaultrole.
    3. Tambahkan konten berikut ke konfigurasi Spark pada MaxCompute:
      # Konfigurasikan Spark pada MaxCompute untuk mengakses sumber daya OSS menggunakan token STS. 
      spark.hadoop.fs.oss.credentials.provider=org.apache.hadoop.fs.aliyun.oss.AliyunStsTokenCredentialsProvider
      
      # Konfigurasikan ARN dari peran yang diasumsikan oleh Spark pada MaxCompute. 
      spark.hadoop.fs.oss.ststoken.roleArn=acs:ram::xxxxxxxxxxxxxxx:role/aliyunodpsdefaultrole
      
      # Konfigurasikan titik akhir internal yang digunakan untuk mengakses sumber daya OSS melalui VPC. 
      spark.hadoop.fs.oss.endpoint=oss-cn-hangzhou-internal.aliyuncs.com

Konfigurasi daftar putih

Dalam kebanyakan kasus, Spark pada MaxCompute dapat mengakses sumber daya OSS tanpa perlu mengonfigurasi daftar putih.

Dalam kasus khusus (misalnya, sejumlah besar data dibaca atau ditulis ke Bucket OSS), Spark pada MaxCompute mungkin gagal mengakses sumber daya OSS. Dalam hal ini, tambahkan konfigurasi berikut:
spark.hadoop.odps.cupid.trusted.services.access.list=[your_bucket_name].oss-xxxxxx-internal.aliyuncs.com
Catatan Konfigurasi ini hanya dapat digunakan saat Anda mengirimkan pekerjaan dalam mode cluster-yarn. Anda harus menambahkan konfigurasi di file konfigurasi atau dalam perintah alat CLI.

Gunakan JindoSDK untuk mengakses OSS

Tambahkan parameter spark.hadoop.fs.AbstractFileSystem.oss.impl dan spark.hadoop.fs.oss.impl ke objek SparkConf. Contoh kode:

val conf = new SparkConf()
  .setAppName("jindo-sdk-demo")
  .set("spark.hadoop.fs.AbstractFileSystem.oss.impl", "com.aliyun.emr.fs.oss.OSS")
  .set("spark.hadoop.fs.oss.impl", "com.aliyun.emr.fs.oss.JindoOssFileSystem")
Catatan Anda harus mengonfigurasi parameter spark.hadoop.fs.oss.impl. Jika tidak, pesan kesalahan "No FileSystem for scheme: oss" akan dikembalikan.