全部产品
Search
文档中心

E-MapReduce:Konektor Delta

更新时间:Jul 02, 2025

Sebuah kluster E-MapReduce (EMR) yang dilengkapi layanan Trino menyediakan konektor Delta. Konektor ini mendukung semua fitur dari Delta Lake sumber terbuka serta menawarkan peningkatan tambahan di atas fitur-fitur tersebut.

Informasi latar belakang

Delta Lake adalah solusi data lake yang dikembangkan oleh Databricks. Delta Lake menyediakan fitur untuk menulis, mengelola, meminta, dan membaca data dari data lake. Untuk informasi lebih lanjut, lihat Ikhtisar.

Prasyarat

Dibutuhkan kluster DataLake atau Custom dengan layanan Trino yang dipilih, serta kluster Hadoop dengan layanan Presto yang dipilih. Untuk informasi lebih lanjut, lihat Buat Kluster.

Batasan

Hanya kluster Hadoop EMR V3.39.1, EMR V5.5.0, dan versi minor berikutnya, serta kluster DataLake dan Custom yang mendukung konektor Delta.

Penggunaan dasar

Ubah konfigurasi konektor Delta

Untuk informasi lebih lanjut tentang cara mengubah konfigurasi konektor Delta, lihat Ubah Konfigurasi Konektor Bawaan.

Konfigurasi default konektor Delta

Buka tab Konfigurasi layanan Trino di konsol EMR. Pada tab Konfigurasi, klik tab delta.properties. Ubah atau tambahkan item konfigurasi sesuai kebutuhan bisnis Anda seperti yang dijelaskan dalam tabel berikut.

Item konfigurasi

Deskripsi

hive.metastore.uri

Uniform resource identifier (URI) yang digunakan untuk mengakses metastore Hive berdasarkan protokol Thrift. Anda dapat mengubah nilai item konfigurasi ini berdasarkan kebutuhan bisnis Anda. Secara default, item konfigurasi ini ditentukan dalam format thrift://master-1-1.cluster-24****:9083.

hive.config.resources

Jalur yang menyimpan file sumber daya yang digunakan oleh metastore Hive.

Contoh

Trino tidak dapat digunakan untuk membuat atau memodifikasi tabel Delta Lake. Gunakan Spark SQL untuk membuat tabel Delta Lake. Untuk informasi lebih lanjut, lihat Gunakan Delta Lake.

  1. Hasilkan data.

    1. Jalankan perintah berikut untuk membuka CLI Spark SQL:

      spark-sql
    2. Eksekusi pernyataan berikut untuk membuat tabel Delta Lake bernama delta_table:

      CREATE TABLE delta_table (id INT) USING delta;
    3. Eksekusi pernyataan berikut untuk menulis data ke tabel delta_table:

      INSERT INTO delta_table VALUES 0,1,2,3,4;
  2. Permintaan data.

    1. Buka konsol Trino. Untuk informasi lebih lanjut, lihat Masuk ke Konsol Trino dengan Menjalankan Perintah.

    2. Eksekusi pernyataan berikut untuk meminta data di tabel delta_table:

      SELECT * FROM delta_table;

      Output berikut akan ditampilkan:

       id
      ----
        0
        1
        2
        3
        4
      (5 baris)

Penggunaan lanjutan

Penting

Fitur ini hanya didukung di versi EMR V3.39.1 dan EMR V5.5.0.

Perjalanan waktu

Anda dapat menggunakan fitur perjalanan waktu untuk meminta data historis dalam tabel Delta Lake.

EMR Trino mendukung fitur perjalanan waktu tabel Delta Lake. Sintaksis fitur ini adalah for xxx as of, di mana xxx menunjukkan mode kerja fitur perjalanan waktu, yang dapat disetel ke VERSION atau TIMESTAMP.

Penting

Sintaksis fitur perjalanan waktu yang didukung oleh EMR Trino mencakup kata kunci FOR, yang tidak termasuk dalam sintaksis Spark SQL dari Delta Lake sumber terbuka.

Contoh:

  1. Jalankan perintah berikut untuk membuka CLI Spark SQL:

    spark-sql
  2. Eksekusi pernyataan berikut untuk menimpa data:

    INSERT OVERWRITE TABLE delta_table VALUES 5,6,7,8,9;
  3. Permintaan data.

    1. Buka konsol Trino. Untuk informasi lebih lanjut, lihat Masuk ke Konsol Trino dengan Menjalankan Perintah.

    2. Eksekusi pernyataan berikut untuk meminta data di tabel delta_table:

      SELECT * FROM delta_table;

      Output berikut akan ditampilkan:

       id
      ----
        5
        6
        7
        8
        9
      (5 baris)
  4. Gunakan fitur perjalanan waktu untuk meminta data historis di tabel delta_table.

    Eksekusi pernyataan berikut untuk meminta data berdasarkan nomor versi. Anda dapat mengonfigurasi parameter VERSION sesuai kebutuhan bisnis Anda. Nomor versi adalah bilangan bulat yang meningkat secara monotonik. Secara default, nilai parameter VERSION adalah 1 setelah operasi INSERT pertama, dan bertambah 1 setiap kali modifikasi dilakukan.

    SELECT * FROM delta_table FOR VERSION AS OF 1;

    Output berikut akan ditampilkan:

     id
    ----
      2
      1
      3
      4
      0
    (5 baris)

    Anda juga dapat meminta data historis dalam tabel Delta Lake berdasarkan timestamp. Jenis timestamp yang didukung meliputi DATE, TIMESTAMP, dan TIMESTAMP WITH TIME ZONE.

    • Jika Anda meminta data berdasarkan timestamp tipe DATE, data dengan timestamp 00:00:00 dalam format UTC pada tanggal permintaan akan diminta.

    • Jika Anda meminta data berdasarkan timestamp tipe TIMESTAMP, data dengan timestamp dalam format UTC sesuai dengan timestamp yang ditentukan akan diminta.

      Sebagai contoh, Anda meminta data pada pukul 20:00:00 tanggal 15 Februari 2022 UTC+8 berdasarkan tipe TIMESTAMP. Contoh kode:

      SELECT * FROM delta_table FOR TIMESTAMP AS OF TIMESTAMP '2022-02-15 12:00:00';
      Catatan

      Dalam contoh kode, TIMESTAMP pertama menunjukkan bahwa mode timestamp digunakan untuk fitur perjalanan waktu, dan TIMESTAMP kedua menunjukkan bahwa tipe TIMESTAMP digunakan untuk meminta data.

      Output berikut akan ditampilkan:

       id
      ----
        2
        0
        3
        4
        1
      (5 baris)
    • Jika Anda meminta data berdasarkan timestamp tipe TIMESTAMP WITH TIME ZONE, tipe data tersebut secara implisit dikonversi sebelum data dibaca.

      Sebagai contoh, Anda meminta data pada pukul 20:00:00 tanggal 15 Februari 2022 UTC+8 berdasarkan tipe TIMESTAMP WITH TIME ZONE. Contoh kode:

      SELECT * FROM delta_table FOR TIMESTAMP AS OF CAST('2022-02-15 20:00:00 +0800' AS TIMESTAMP WITH TIME ZONE);

Z-Ordering

Trino mengoptimalkan permintaan tabel Delta Lake berdasarkan Z-Ordering. Optimasi permintaan data berdasarkan Parquet dan pengabaian data didukung. Setelah Anda mengoptimalkan permintaan data berdasarkan Parquet atau pengabaian data, Delta Lake mengumpulkan statistik nilai maksimum dan minimum setiap bidang pada granularitas file. Statistik ini digunakan untuk menyaring file data. Anda dapat menggunakan konektor Delta yang disediakan oleh EMR Trino untuk membaca statistik tersebut.

Anda dapat menggunakan pernyataan OPTIMIZE dan klausa ZORDER BY untuk mengoptimalkan tabel Delta Lake dan menentukan kolom yang tepat untuk Z-Ordering. Dengan cara ini, ketika Anda menggunakan Trino untuk meminta tabel Delta Lake yang dioptimalkan, kecepatan permintaan dapat meningkat hingga puluhan kali.

Trino memungkinkan Anda untuk Z-Order kolom dengan tipe data berikut: INT, LONG, DOUBLE, FLOAT, BINARY, BOOLEAN, STRING, dan ARRAY.

Ketika Anda mengonfigurasi fitur pengabaian data untuk memproses data yang di-Z-Ordered, Anda dapat menentukan predikat berikut: =, <, <=, >, dan >=.

Catatan

Trino tidak mendukung predikat seperti LIKE dan IN. Setelah Anda mengoptimalkan predikat seperti LIKE dan IN menggunakan Z-Ordering, Anda dapat menggunakan predikat tersebut berdasarkan kemampuan pengurutan parsial Z-Ordering untuk mempercepat permintaan.

Sebagai contoh, tabel conn_zorder berisi empat kolom: src_ip, src_port, dst_ip, dan dst_port.

Eksekusi pernyataan berikut untuk mengoptimalkan kolom di Spark:

OPTIMIZE conn_zorder ZORDER BY (src_ip, src_port, dst_ip, dst_port);
Penting

Kolom dalam tanda kurung diurutkan dalam urutan yang sama dengan kolom yang di-Z-Ordered.

Waktu yang diperlukan untuk melakukan operasi OPTIMIZE bervariasi berdasarkan jumlah data. Setelah Anda mengoptimalkan kolom, kinerja permintaan yang memenuhi kondisi eksekusi permintaan ditingkatkan.

  • Anda dapat meningkatkan kinerja permintaan data dengan meminta kolom tertentu yang di-Z-Ordered. Contoh pernyataan:

    SELECT COUNT(*) FROM conn_zorder WHERE src_ip > '64.';
  • Ketika Anda meminta kolom yang di-Z-Ordered, kecepatan permintaan meningkat secara signifikan. Contoh pernyataan:

    SELECT COUNT(*) FROM conn_zorder WHERE src_ip >= '64.' AND dst_ip < '192.' AND src_port < 1000 AND dst_port > 50000;