Componente Delta Lake facoltativo di Dataproc

Puoi installare componenti aggiuntivi come Delta Lake quando crei un cluster Dataproc utilizzando la funzionalità Componenti facoltativi. Questa pagina descrive come installare facoltativamente il componente Delta Lake su un cluster Dataproc.

Se installato su un cluster Dataproc, il componente Delta Lake installa le librerie Delta Lake e configura Spark e Hive nel cluster per funzionare con Delta Lake.

Versioni immagine Dataproc compatibili

Puoi installare il componente Delta Lake sui cluster Dataproc creati con la versione immagine di Dataproc 2.2.46 e versioni immagine successive.

Consulta la sezione Versioni Dataproc supportate per la versione del componente Delta Lake inclusa nelle release delle immagini Dataproc.

Quando crei un cluster Dataproc con il componente Delta Lake abilitato, le seguenti proprietà Spark sono 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

Installa il componente

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

Console

  1. Nella console Google Cloud , vai alla pagina Dataproc Crea un cluster.

    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.

Interfaccia a riga di comando gcloud

Per creare un cluster Dataproc 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:

  • CLUSTER_NAME: specifica il nome del cluster.
  • REGION: specifica una regione Compute Engine in cui si troverà il cluster.

API REST

Il componente Delta Lake può essere specificato tramite l'API Dataproc utilizzando SoftwareConfig.Component nell'ambito 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

Scrivi in una tabella Delta Lake

Puoi utilizzare Spark DataFrame per scrivere dati in una tabella Delta Lake. Gli esempi seguenti creano un DataFrame con dati di esempio, creano una tabella Delta Lake in Cloud Storage e poi scrivono i dati nella tabella Delta Lake.my_delta_table

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 riportati di seguito 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

Scrivi in una tabella Delta in Hive.

Il componente facoltativo Dataproc Delta Lake è preconfigurato per funzionare con le tabelle esterne Hive.

Per saperne di più, vedi 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 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 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.

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