Menginstal komponen Delta Lake di cluster

Dokumen ini menjelaskan cara menginstal dan mengonfigurasi komponen opsional Delta Lake di cluster Managed Service for Apache Spark. Jika diaktifkan, komponen Delta Lake akan menginstal library yang diperlukan dan menyiapkan Spark dan Hive untuk bekerja dengan Delta Lake.

Untuk mempelajari lebih lanjut komponen opsional lain yang tersedia di Managed Service for Apache Spark, lihat Komponen opsional yang tersedia.

Versi image Managed Service for Apache Spark yang kompatibel

Anda dapat menginstal komponen Delta Lake di cluster Managed Service for Apache Spark yang dibuat dengan versi image Managed Service for Apache Spark 2.2.46 dan versi image yang lebih baru.

Lihat Versi Managed Service for Apache Spark yang didukung untuk versi komponen Delta Lake yang disertakan dalam rilis image Managed Service for Apache Spark.

Saat Anda membuat cluster Managed Service for Apache Spark dengan komponen Delta Lake diaktifkan, properti Spark berikut dikonfigurasi untuk bekerja dengan Delta Lake.

File konfigurasi Properti Nilai default
/etc/spark/conf/spark-defaults.conf spark.sql.extensions io.delta.sql.DeltaSparkSessionExtension
/etc/spark/conf/spark-defaults.conf spark.sql.catalog.spark_catalog org.apache.spark.sql.delta.catalog.DeltaCatalog

Menginstal komponen

Instal komponen saat Anda membuat cluster Managed Service for Apache Spark menggunakan konsol Google Cloud , Google Cloud CLI, atau Dataproc API.

Konsol

  1. Di konsol Google Cloud , buka halaman Managed Service for Apache Spark Create a cluster.

    Buka Create a cluster

    Panel Set up cluster dipilih.

  2. Di bagian Components, di bagian Optional components, pilih Delta Lake dan komponen opsional lainnya untuk diinstal di cluster Anda.

gcloud CLI

Untuk membuat cluster Managed Service for Apache Spark yang menyertakan komponen Delta Lake, gunakan perintah gcloud dataproc clusters create dengan tanda --optional-components.

gcloud dataproc clusters create CLUSTER_NAME \
    --optional-components=DELTA \
    --region=REGION \
    ... other flags

Catatan:

  • CLUSTER_NAME: Tentukan nama cluster.
  • REGION: Tentukan region Compute Engine tempat cluster akan berada.

REST API

Komponen Delta Lake dapat ditentukan melalui Dataproc API menggunakan SoftwareConfig.Component sebagai bagian dari permintaan clusters.create.

Contoh penggunaan

Bagian ini memberikan contoh pembacaan dan penulisan data menggunakan tabel Delta Lake.

Tabel Delta Lake

Menulis ke tabel Delta Lake

Anda dapat menggunakan Spark DataFrame untuk menulis data ke tabel Delta Lake. Contoh berikut membuat DataFrame dengan data contoh, membuat tabel Delta Lake my_delta_table di Cloud Storage, lalu menulis data ke tabel Delta Lake.

PySpark

# Create a DataFrame with sample data.
data = spark.createDataFrame([(1, "Alice"), (2, "Bob")], ["id", "name"])

# Create a Delta Lake table in Cloud Storage.
spark.sql("""CREATE TABLE IF NOT EXISTS my_delta_table (
    id integer,
    name string)
USING delta
LOCATION 'gs://delta-gcs-demo/example-prefix/default/my_delta_table'""")

# Write the DataFrame to the Delta Lake table in Cloud Storage.
data.writeTo("my_delta_table").append()

Scala

// Create a DataFrame with sample data.
val data = Seq((1, "Alice"), (2, "Bob")).toDF("id", "name")

// Create a Delta Lake table in Cloud Storage.
spark.sql("""CREATE TABLE IF NOT EXISTS my_delta_table (
    id integer,
    name string)
USING delta
LOCATION 'gs://delta-gcs-demo/example-prefix/default/my_delta_table'""")

// Write the DataFrame to the Delta Lake table in Cloud Storage.
data.write.format("delta").mode("append").saveAsTable("my_delta_table")

Spark SQL

CREATE TABLE IF NOT EXISTS my_delta_table (
    id integer,
    name string)
USING delta
LOCATION 'gs://delta-gcs-demo/example-prefix/default/my_delta_table';

INSERT INTO my_delta_table VALUES ("1", "Alice"), ("2", "Bob");

Membaca dari tabel Delta Lake

Contoh berikut membaca my_delta_table dan menampilkan isinya.

PySpark

# Read the Delta Lake table into a DataFrame.
df = spark.table("my_delta_table")

# Display the data.
df.show()

Scala

// Read the Delta Lake table into a DataFrame.
val df = spark.table("my_delta_table")

// Display the data.
df.show()

Spark SQL

SELECT * FROM my_delta_table;

Hive dengan Delta Lake

Menulis ke Tabel Delta di Hive.

Komponen opsional Managed Service for Apache Spark Delta Lake telah dikonfigurasi sebelumnya untuk bekerja dengan tabel eksternal Hive.

Untuk mengetahui informasi selengkapnya, lihat Konektor Hive.

Jalankan contoh di klien beeline.

beeline -u jdbc:hive2://

Buat tabel Spark Delta Lake.

Tabel Delta Lake harus dibuat menggunakan Spark sebelum tabel eksternal Hive dapat mereferensikannya.

CREATE TABLE IF NOT EXISTS my_delta_table (
    id integer,
    name string)
USING delta
LOCATION 'gs://delta-gcs-demo/example-prefix/default/my_delta_table';

INSERT INTO my_delta_table VALUES ("1", "Alice"), ("2", "Bob");

Buat tabel eksternal Hive.

SET hive.input.format=io.delta.hive.HiveInputFormat;
SET hive.tez.input.format=io.delta.hive.HiveInputFormat;

CREATE EXTERNAL TABLE deltaTable(id INT, name STRING)
STORED BY 'io.delta.hive.DeltaStorageHandler'
LOCATION 'gs://delta-gcs-demo/example-prefix/default/my_delta_table';

Catatan:

  • Class io.delta.hive.DeltaStorageHandler mengimplementasikan API sumber data Hive. Langkah ini dapat memuat tabel Delta dan mengekstrak metadatanya. Jika skema tabel dalam pernyataan CREATE TABLE tidak konsisten dengan metadata Delta Lake yang mendasarinya, error akan ditampilkan.

Membaca dari tabel Delta Lake di Hive.

Untuk membaca data dari tabel Delta, gunakan pernyataan SELECT:

SELECT * FROM deltaTable;

Menghapus tabel Delta Lake.

Untuk menghapus tabel Delta, gunakan pernyataan DROP TABLE:

DROP TABLE deltaTable;