All Products
Search
Document Center

E-MapReduce:Baca dari dan tulis ke MySQL

Last Updated:Jun 21, 2026

Apache Spark secara native mendukung akses ke MySQL melalui JDBC Connector. Serverless Spark secara otomatis memuat driver JDBC MySQL (versi 8.0.33) saat startup. Anda dapat menghubungkan ke MySQL menggunakan session SQL, task batch, atau Notebook untuk membaca dan menulis data.

Prasyarat

  • Anda telah membuat ruang kerja Serverless Spark. Untuk informasi selengkapnya, lihat Create a workspace.

  • Anda telah membuat instans MySQL.

    Anda dapat menggunakan instans MySQL yang dikelola sendiri atau layanan database Alibaba Cloud, seperti RDS for MySQL atau PolarDB for MySQL.

    Topik ini menggunakan RDS for MySQL sebagai contoh. Untuk informasi selengkapnya, lihat Create and configure an RDS for MySQL instance.

Catatan penggunaan

Pastikan konektivitas jaringan antara Serverless Spark dan MySQL. Untuk detail konfigurasi, lihat Establish network connectivity between EMR Serverless Spark and other VPCs.

Catatan

Saat mengonfigurasi aturan security group, buka hanya port yang diperlukan. Contoh ini memerlukan pembukaan port TCP 3306.

Prosedur

Metode 1: Menggunakan session SQL

  1. Buat session SQL. Di Sessions, buat session SQL dan pilih Normal Network Connection yang telah dikonfigurasi sebelumnya. Untuk informasi selengkapnya, lihat Create an SQL session.

  2. Buat task SQL. Di Development, buat task Spark SQL dan jalankan SQL berikut.

    CREATE TEMPORARY VIEW test
    USING org.apache.spark.sql.jdbc
    OPTIONS (
      url 'jdbc:mysql://<jdbc_url>/',
      dbtable '<db>.<table>',
      user '<username>',
      password '<password>'
    );
    SELECT * FROM test;

    Tabel berikut menjelaskan parameter tersebut.

    Parameter

    Deskripsi

    url

    String koneksi JDBC. Formatnya adalah jdbc:mysql://<jdbc_url>/. Ganti <jdbc_url> dengan nilai aktual.

    dbtable

    Tabel database yang akan dibaca. Formatnya adalah <db>.<table>. Topik ini menggunakan test_mysql_db.test sebagai contoh.

    user

    Username untuk database MySQL.

    Catatan

    User harus memiliki izin baca pada tabel target.

    password

    Password untuk database MySQL.

    Jika kueri mengembalikan konten tabel, koneksi berhasil.

  3. Masukkan data. Jalankan perintah berikut untuk memasukkan data ke tabel MySQL.

    INSERT INTO test VALUES(4, 'd'),(5, 'e');
    SELECT * FROM test;

    Jika kueri mengembalikan data yang dimasukkan, operasi penulisan berhasil.

Metode 2: Menggunakan session Notebook

  1. Buat session Notebook. Di Sessions, buat session Notebook dan pilih Normal Network Connection yang telah dikonfigurasi sebelumnya. Untuk informasi selengkapnya, lihat Create a Notebook session.

  2. Buat task Notebook. Di Development, buat task jenis Interactive Development > Notebook dan jalankan kode Python berikut untuk pengujian.

    df = spark.read \
      .format("jdbc") \
      .option("url", "jdbc:mysql://<jdbc_url>") \
      .option("dbtable", "<db>.<table>") \
      .option("user", "<username>") \
      .option("password", "<password>") \
      .load()
    df.show()

    Jika output menampilkan konten tabel, koneksi berhasil.

  3. Masukkan data. Jalankan kode berikut untuk memasukkan data ke tabel MySQL.

    df = spark.createDataFrame([(6, 'f'), (7, 'g')], ["id", "name"])
    df.write \
      .format("jdbc") \
      .mode("append") \
      .option("url", "jdbc:mysql://<jdbc_url>") \
      .option("dbtable", "<db>.<table>") \
      .option("user", "<username>") \
      .option("password", "<password>") \
      .save()
    df.show()
    

    Parameter mode("append") mengatur mode penulisan menjadi append, yang menambahkan data ke tabel alih-alih menimpa data yang sudah ada.

    Jika output menampilkan data yang dimasukkan, operasi penulisan berhasil.

Metode 3: Menggunakan task batch Spark

  1. Kompilasi dan paket kode uji Scala berikut ke dalam file JAR.

    package spark.test
    import org.apache.spark.sql.SparkSession
    object Main {
      def main(args: Array[String]): Unit = {
        val spark = SparkSession.builder()
          .appName("test")
          .getOrCreate()
        val newRows = spark.createDataFrame(Seq((6, "f"), (7, "g"))).toDF("id", "name")
        newRows.write.format("jdbc")
          .mode("append")
          .option("url", "jdbc:mysql://<jdbc_url>")
          .option("dbtable", "<db>.<table>")
          .option("user", "<username>")
          .option("password", "<password>")
          .save()
        spark.read.format("jdbc")
          .option("url", "jdbc:mysql://<jdbc_url>")
          .option("dbtable", "<db>.<table>")
          .option("user", "<username>")
          .option("password", "<password>")
          .load()
          .show()
        spark.stop()
      }
    }
  2. Buat task batch. Di Development, buat task jenis Application > JAR, dan konfigurasikan parameter berikut. Untuk informasi selengkapnya, lihat Develop a batch or streaming task.

    • Main JAR Resource: Pilih atau masukkan path ke file JAR yang telah dipaketkan.

    • Main Class: spark.test.Main.

    • Normal Network Connection: Pilih koneksi jaringan yang telah dikonfigurasi sebelumnya.

  3. Verifikasi hasilnya. Setelah task dijalankan, klik Log Exploration di bagian Execution Records. Di tab Stdout pada Driver Log, Anda dapat melihat konten tabel dari database MySQL Anda.