Questo documento spiega come installare e configurare il componente facoltativo Delta Lake su un cluster Dataproc. 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 Dataproc, consulta Componenti facoltativi disponibili.
Versioni immagine Dataproc compatibili
Puoi installare il componente Delta Lake sui cluster Dataproc creati con la versione immagine Dataproc 2.2.46 e versioni immagine successive.
Consulta Versioni Dataproc supportate per la versione del componente Delta Lake inclusa nelle release delle immagini Dataproc.
Proprietà correlate a Delta Lake
Quando crei un cluster Dataproc con il componente Delta Lake abilitato, le seguenti proprietà di 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 Dataproc utilizzando la Google Cloud console, Google Cloud CLI o l'API Dataproc.
Console
- Nella Google Cloud console, vai alla pagina Dataproc
Crea un cluster.
Viene selezionato il riquadro Configura cluster.
- Nella sezione Componenti, in Componenti facoltativi, seleziona Delta Lake e altri componenti facoltativi da installare sul cluster.
Gcloud CLI
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 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 Dataproc Delta Lake è 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.DeltaStorageHandlerimplementa le API dell'origine dati di Hive. Può caricare una tabella Delta ed estrarne i metadati. Se lo schema della tabella nell'istruzioneCREATE TABLEnon è 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;
Eliminare una tabella Delta Lake.
Per eliminare una tabella Delta, utilizza l'istruzione DROP TABLE:
DROP TABLE deltaTable;