All Products
Search
Document Center

E-MapReduce:Hubungkan Spark ke OSS

Last Updated:Mar 26, 2026

EMR mengintegrasikan Spark dengan Object Storage Service (OSS), memungkinkan Anda membaca dan menulis data di OSS menggunakan Spark RDD (Scala), PySpark, atau Spark SQL. EMR mendukung akses ke OSS baik tanpa menentukan pasangan AccessKey maupun dengan secara eksplisit menentukan pasangan AccessKey.

Pilih metode akses

MetodeKapan digunakan
Akses tanpa password (disarankan)Kluster EMR Anda mendukung akses OSS tanpa password. Tidak perlu mengelola kredensial.
AccessKey eksplisitAnda memerlukan pasangan AccessKey tertentu, atau kluster Anda tidak mendukung akses tanpa password.

Prasyarat

  • Kluster EMR dengan Spark terinstal

  • Akses SSH ke node master. Untuk detailnya, lihat Masuk ke node master kluster

  • Bucket OSS yang berisi data untuk dibaca, atau path OSS yang dapat ditulis untuk output

Akses OSS tanpa menentukan pasangan AccessKey

Kluster EMR menggunakan akses OSS tanpa password secara default. Contoh berikut menggunakan skema URI oss:// untuk membaca dari dan menulis ke OSS.

Gunakan Spark Shell (Scala)

  1. Masuk ke node master melalui SSH.

  2. Jalankan Spark Shell:

    spark-shell
  3. Jalankan kode berikut. Ganti <yourBucket> dengan nama bucket OSS Anda.

    scala> val pathIn = "oss://<yourBucket>/path/to/read"
    scala> val inputData = sc.textFile(pathIn)
    scala> val cnt = inputData.count
    cnt: Long = ...
    scala> println(s"count: $cnt")
    scala> val outputPath = "oss://<yourBucket>/path/to/write"
    scala> val outputData = inputData.map(e => s"$e has been processed.")
    scala> outputData.saveAsTextFile(outputPath)

    Kode ini membaca semua baris dari path input, menghitung jumlahnya, menambahkan sufiks ke setiap baris, lalu menulis hasilnya ke path output. Untuk contoh lengkapnya, lihat SparkOssDemo.scala di GitHub.

Gunakan PySpark

  1. Masuk ke node master melalui SSH.

  2. Jalankan PySpark:

    pyspark
  3. Jalankan kode berikut. Ganti <yourBucket> dengan nama bucket OSS Anda.

    >>> pathIn = "oss://<yourBucket>/path/to/read"
    >>> df = spark.read.text(pathIn)
    >>> cnt = df.count()
    >>> print(cnt)
    >>> outputPath = "oss://<yourBucket>/path/to/write"
    >>> df.write.format("parquet").mode("overwrite").save(outputPath)

    Kode ini membaca path input sebagai DataFrame teks, mencetak jumlah barisnya, lalu menulis hasilnya dalam format Parquet ke path output.

Gunakan Spark SQL

  1. Masuk ke node master melalui SSH.

  2. Jalankan CLI Spark SQL:

    spark-sql
  3. Buat database yang disimpan di OSS, buat tabel CSV, dan masukkan satu baris:

    ParameterDeskripsi
    delimiterKarakter yang digunakan untuk memisahkan bidang dalam file CSV.
    headerAtur ke true jika baris pertama berisi nama kolom; false jika tidak.
    CREATE DATABASE test_db LOCATION "oss://<yourBucket>/test_db";
    USE test_db;
    CREATE TABLE student (id INT, name STRING, age INT)
        USING CSV OPTIONS ("delimiter"=";", "header"="true");
    INSERT INTO student VALUES(1, "ab", 12);
    SELECT * FROM student;

    Ganti <yourBucket> dengan nama bucket OSS Anda. Pernyataan SELECT mengembalikan:

    1    ab    12
  4. Untuk memverifikasi hasilnya, periksa file CSV di OSS. File tersebut menggunakan delimiter titik koma, dengan baris pertama sebagai header:

    id;name;age
    1;ab;12

Akses OSS dengan menentukan pasangan AccessKey

Gunakan metode ini ketika akses tanpa password tidak tersedia atau ketika Anda perlu mengotentikasi dengan pasangan AccessKey tertentu.

Langkah 1: Hapus konfigurasi akses tanpa password

Hapus parameter fs.oss.credentials.provider dari file core-site.xml layanan Hadoop-Common.

Langkah 2: Verifikasi bahwa akses tanpa password telah dihapus

Jalankan perintah berikut:

hadoop fs -ls oss://<yourBucket>/test_db

Jika penghapusan berhasil, Anda akan melihat:

ls: ERROR: not found login secrets, please configure the accessKeyId and accessKeySecret.

Langkah 3: Tambahkan parameter AccessKey ke core-site.xml

Dalam file core-site.xml layanan Hadoop-Common, tambahkan parameter berikut:

KunciNilai contohDeskripsi
fs.oss.accessKeyIdLTAI5tM85Z4sc****ID AccessKey Anda
fs.oss.accessKeySecretHF7P1L8PS6Eqf****Rahasia AccessKey Anda

Langkah 4: Verifikasi konfigurasi AccessKey

Jalankan perintah berikut:

hadoop fs -ls oss://<yourBucket>/test_db

Jika pasangan AccessKey dikonfigurasi dengan benar, output akan menampilkan daftar path OSS:

drwxrwxrwx   - root root          0 2025-02-24 11:45 oss://<yourBucket>/test_db/student

Langkah 5: Mulai ulang layanan Spark

Mulai ulang semua layanan terkait Spark. Setelah berjalan, gunakan Spark Shell, PySpark, atau Spark SQL untuk membaca dari dan menulis ke OSS.

FAQ

Bagaimana cara membaca dari satu bucket dan menulis ke bucket lain yang menggunakan kredensial berbeda?

Konfigurasikan penyedia kredensial tingkat bucket menggunakan parameter fs.oss.bucket.<BucketName>.credentials.provider, di mana <BucketName> adalah nama bucket yang ingin Anda konfigurasi. Untuk detailnya, lihat Konfigurasikan penyedia kredensial OSS atau OSS-HDFS berdasarkan bucket.

Bagaimana cara mengakses bucket di wilayah berbeda?

Gunakan format oss://<BucketName>.<public endpoint of the bucket>/ untuk menentukan titik akhir publik bucket tersebut. Akses lintas-wilayah dikenai biaya transfer data dan dapat memengaruhi stabilitas.

Bagaimana cara menggunakan SDK Amazon S3 untuk mengakses OSS?

OSS menyediakan operasi API yang kompatibel dengan Amazon S3. Setelah memigrasikan data dari Amazon S3 ke OSS, perbarui konfigurasi klien Anda agar mengarah ke titik akhir OSS. Untuk detailnya, lihat Gunakan SDK Amazon S3 untuk mengakses OSS.