In diesem Dokument wird erläutert, wie Sie die Delta Lake optionale Komponente auf einem Managed Service for Apache Spark Cluster installieren und konfigurieren. Wenn die Delta Lake-Komponente aktiviert ist, werden die erforderlichen Bibliotheken installiert und Spark und Hive so eingerichtet, dass sie mit Delta Lake funktionieren.
Weitere Informationen zu anderen verfügbaren optionalen Komponenten in Managed Service for Apache Spark finden Sie unter Verfügbare optionale Komponenten.
Kompatible Managed Service for Apache Spark-Image-Versionen
Sie können die Delta Lake-Komponente auf Managed Service for Apache Spark-Clustern installieren, die mit der Managed Service for Apache Spark-Image-Version 2.2.46 und höher erstellt wurden.
Informationen zur Delta Lake-Komponentenversion, die in Managed Service for Apache Spark-Image-Releases enthalten ist, finden Sie unter Unterstützte Managed Service for Apache Spark-Versionen.
Delta Lake-bezogene Attribute
Wenn Sie einen Managed Service for Apache Spark-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 Managed Service for Apache Spark-Cluster über die Google Cloud Console, die Google Cloud CLI oder die Dataproc API erstellen.
Console
- Wechseln Sie in der Google Cloud Console zur Seite Cluster erstellen von Managed Service for Apache Spark.
Der Bereich Cluster einrichten ist ausgewählt.
- 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
Verwenden Sie zum Erstellen eines Managed Service for Apache Spark-Clusters, der die Delta Lake-Komponente enthält,
verwenden Sie den
gcloud dataproc clusters create
Befehl mit dem --optional-components Flag.
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 den 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 Delta Lake-Tabelle my_delta_table in Cloud Storage erstellt und dann die Daten 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 die my_delta_table gelesen und ihr 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 Delta Lake-Komponente von Managed Service for Apache Spark 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://Erstellen Sie eine Spark Delta Lake-Tabelle.
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.DeltaStorageHandlerimplementiert die Hive-Datenquellen-APIs. Sie kann eine Delta-Tabelle laden und ihre Metadaten extrahieren. Wenn das Tabellenschema in der AnweisungCREATE TABLEnicht mit den zugrunde liegenden Delta Lake-Metadaten übereinstimmt, wird ein Fehler ausgegeben.
Aus einer Delta Lake-Tabelle in Hive lesen
Verwenden Sie eine SELECT-Anweisung, um Daten aus einer Delta-Tabelle zu lesen:
SELECT * FROM deltaTable;
Delta Lake-Tabelle löschen
Verwenden Sie die Anweisung DROP TABLE, um eine Delta-Tabelle zu löschen:
DROP TABLE deltaTable;