Installa il componente Delta Lake su un cluster

Questo documento spiega come installare e configurare il componente facoltativo Delta Lake su un cluster Managed Service for Apache Spark. Quando è abilitato, il componente Delta Lake installa le librerie necessarie e configura Spark e Hive per funzionare con Delta Lake.

Per saperne di più sugli altri componenti facoltativi disponibili in Managed Service for Apache Spark, consulta Componenti facoltativi disponibili.

Versioni delle immagini di Managed Service for Apache Spark compatibili

Puoi installare il componente Delta Lake sui cluster Managed Service for Apache Spark creati con la versione dell'immagine di Managed Service for Apache Spark 2.2.46 e versioni successive.

Per la versione del componente Delta Lake inclusa nelle release delle immagini di Managed Service for Apache Spark, consulta Versioni di Managed Service for Apache Spark supportate.

Quando crei un cluster Managed Service for Apache Spark con il componente Delta Lake abilitato, le seguenti proprietà Spark vengono configurate per funzionare con Delta Lake.

File di configurazione Proprietà Valore predefinito
/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

Installare il componente

Installa il componente quando crei un cluster Managed Service for Apache Spark utilizzando la Google Cloud console, Google Cloud CLI o l'API Dataproc.

Console

  1. Nella Google Cloud console, vai alla pagina Crea un cluster di Managed Service for Apache Spark.

    Vai a Crea un cluster

    Il riquadro Configura cluster è selezionato.

  2. Nella sezione Componenti, in Componenti facoltativi, seleziona Delta Lake e altri componenti facoltativi da installare sul cluster.

Gcloud CLI

Per creare un cluster Managed Service for Apache Spark che includa il componente Delta Lake, utilizza il comando gcloud dataproc clusters create con il flag --optional-components.

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

Note:

API REST

Il componente Delta Lake può essere specificato tramite l'API Dataproc utilizzando il SoftwareConfig.Component come parte di una richiesta clusters.create.

Esempi di utilizzo

Questa sezione fornisce esempi di lettura e scrittura dei dati utilizzando le tabelle Delta Lake.

Tabella Delta Lake

Scrivere in una tabella Delta Lake

Puoi utilizzare il Spark DataFrame per scrivere i dati in una tabella Delta Lake. Gli esempi seguenti creano un DataFrame con dati di esempio, creano una tabella Delta Lake my_delta_table in Cloud Storage e poi scrivono i dati nella tabella 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");

Leggere da una tabella Delta Lake

Gli esempi seguenti leggono my_delta_table e ne visualizzano i contenuti.

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

Scrivere in una tabella Delta in Hive.

Il componente facoltativo Delta Lake di Managed Service for Apache Spark è preconfigurato per funzionare con le tabelle esterne di Hive.

Per saperne di più, consulta Connettore Hive.

Esegui gli esempi in un client beeline.

beeline -u jdbc:hive2://

Crea una tabella Spark Delta Lake.

La tabella Delta Lake deve essere creata utilizzando Spark prima che una tabella esterna di Hive possa farvi riferimento.

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

Crea una tabella esterna di 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';

Note:

  • La classe io.delta.hive.DeltaStorageHandler implementa le API dell'origine dati Hive. Può caricare una tabella Delta ed estrarne i metadati. Se lo schema della tabella nell'istruzione CREATE TABLE non è coerente con i metadati Delta Lake sottostanti, viene generato un errore.

Leggere da una tabella Delta Lake in Hive.

Per leggere i dati da una tabella Delta, utilizza un'istruzione SELECT:

SELECT * FROM deltaTable;

Elimina una tabella Delta Lake.

Per eliminare una tabella Delta, utilizza l'istruzione DROP TABLE:

DROP TABLE deltaTable;