Optionale Delta Lake-Komponente in Dataproc

Sie können zusätzliche Komponenten wie Delta Lake installieren, wenn Sie einen Dataproc-Cluster mit dem Feature Optionale Komponenten erstellen. Auf dieser Seite wird beschrieben, wie Sie die Delta Lake-Komponente optional in einem Dataproc-Cluster installieren können.

Wenn die Delta Lake-Komponente in einem Dataproc-Cluster installiert wird, werden Delta Lake-Bibliotheken installiert und Spark und Hive im Cluster werden für die Verwendung von Delta Lake konfiguriert.

Kompatible Dataproc-Image-Versionen

Sie können die Delta Lake-Komponente auf Dataproc-Clustern installieren, die mit Dataproc-Image-Version 2.2.46 und höher erstellt wurden.

Informationen zur Delta Lake-Komponentenversion, die in Dataproc-Image-Releases enthalten ist, finden Sie unter Unterstützte Dataproc-Versionen.

Wenn Sie einen Dataproc-Cluster mit aktivierter Delta Lake-Komponente erstellen, werden die folgenden Spark-Attribute für die Verwendung mit Delta Lake konfiguriert.

Konfigurationsdatei Attribut Standardwert
/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

Komponente installieren

Installieren Sie die Komponente, wenn Sie einen Dataproc-Cluster mit der Google Cloud -Konsole, der Google Cloud CLI oder der Dataproc API erstellen.

Console

  1. Rufen Sie in der Google Cloud Console die Dataproc-Seite Cluster erstellen auf.

    Zur Seite „Cluster erstellen“

    Der Bereich Cluster einrichten ist ausgewählt.

  2. Wählen Sie im Abschnitt Komponenten unter Optionale Komponenten die Option Delta Lake und andere optionale Komponenten aus, die auf Ihrem Cluster installiert werden sollen.

gcloud-CLI

Zum Erstellen eines Dataproc-Clusters, der die Delta Lake-Komponente enthält, verwenden Sie den Befehl gcloud dataproc clusters create mit dem Flag --optional-components.

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

Hinweise:

  • CLUSTER_NAME: Geben Sie den Namen des Clusters an.
  • REGION: Geben Sie eine Compute Engine-Region an, in der sich der Cluster befinden soll.

REST API

Die Delta Lake-Komponente kann über die Dataproc API mit SoftwareConfig.Component als Teil einer clusters.create-Anfrage angegeben werden.

Beispiele für die Verwendung

In diesem Abschnitt finden Sie Beispiele für das Lesen und Schreiben von Daten mit Delta Lake-Tabellen.

Delta Lake-Tabelle

In eine Delta Lake-Tabelle schreiben

Sie können den Spark-DataFrame verwenden, um Daten in eine Delta Lake-Tabelle zu schreiben. In den folgenden Beispielen wird ein DataFrame mit Beispieldaten erstellt, eine my_delta_table-Delta Lake-Tabelle in Cloud Storage erstellt und die Daten dann in die Delta Lake-Tabelle geschrieben.

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");

Aus einer Delta Lake-Tabelle lesen

In den folgenden Beispielen wird my_delta_table gelesen und sein Inhalt angezeigt.

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 mit Delta Lake

In eine Delta-Tabelle in Hive schreiben

Die optionale Dataproc-Komponente für Delta Lake ist für die Verwendung mit externen Hive-Tabellen vorkonfiguriert.

Weitere Informationen finden Sie unter Hive-Connector.

Führen Sie die Beispiele in einem Beeline-Client aus.

beeline -u jdbc:hive2://

Spark Delta Lake-Tabelle erstellen

Die Delta Lake-Tabelle muss mit Spark erstellt werden, bevor eine externe Hive-Tabelle darauf verweisen kann.

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");

Erstellen Sie eine externe Hive-Tabelle.

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';

Hinweise:

  • Die Klasse io.delta.hive.DeltaStorageHandler implementiert die Hive-Datenquellen-APIs. Sie kann eine Delta-Tabelle laden und ihre Metadaten extrahieren. Wenn das Tabellenschema in der CREATE TABLE-Anweisung nicht mit den zugrunde liegenden Delta Lake-Metadaten übereinstimmt, wird ein Fehler ausgegeben.

Aus einer Delta Lake-Tabelle in Hive lesen.

Verwenden Sie zum Lesen von Daten aus einer Delta-Tabelle eine SELECT-Anweisung:

SELECT * FROM deltaTable;

Delta Lake-Tabelle löschen

Verwenden Sie die Anweisung DROP TABLE, um eine Delta-Tabelle zu löschen:

DROP TABLE deltaTable;