Componente opcional Delta Lake de Dataproc

Puedes instalar componentes adicionales, como Delta Lake, al crear un clúster de Dataproc mediante la función Componentes opcionales. En esta página se describe cómo puedes instalar opcionalmente el componente Delta Lake en un clúster de Dataproc.

Cuando se instala en un clúster de Dataproc, el componente Delta Lake instala bibliotecas de Delta Lake y configura Spark y Hive en el clúster para que funcionen con Delta Lake.

Versiones de imagen de Dataproc compatibles

Puedes instalar el componente Delta Lake en clústeres de Dataproc creados con la versión de imagen de Dataproc 2.2.46 o versiones posteriores.

Consulta las versiones de Dataproc compatibles para ver la versión del componente Delta Lake incluida en las versiones de imágenes de Dataproc.

Al crear un clúster de Dataproc con el componente Delta Lake habilitado, se configuran las siguientes propiedades de Spark para que funcionen con Delta Lake.

Archivo de configuración Propiedad Valor predeterminado
/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

Instalar el componente

Instala el componente al crear un clúster de Dataproc mediante la Google Cloud consola, la CLI de Google Cloud o la API de Dataproc.

Consola

  1. En la Google Cloud consola, ve a la página de Dataproc Crear un clúster.

    Ir a Crear un clúster

    El panel Configurar clúster está seleccionado.

  2. En la sección Componentes, en Componentes opcionales, selecciona Delta Lake y otros componentes opcionales para instalarlos en el clúster.

CLI de gcloud

Para crear un clúster de Dataproc que incluya el componente Delta Lake, usa el comando gcloud dataproc clusters create con la marca --optional-components.

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

Notas:

  • CLUSTER_NAME: especifica el nombre del clúster.
  • REGION: especifica una región de Compute Engine en la que se ubicará el clúster.

API REST

El componente Delta Lake se puede especificar a través de la API Dataproc mediante SoftwareConfig.Component como parte de una solicitud clusters.create.

Ejemplos de uso

En esta sección se proporcionan ejemplos de lectura y escritura de datos con tablas Delta Lake.

Tabla de Delta Lake

Escribir en una tabla de Delta Lake

Puedes usar Spark DataFrame para escribir datos en una tabla de Delta Lake. En los siguientes ejemplos se crea un DataFrame con datos de ejemplo, se crea una tabla de Delta Lake my_delta_table en Cloud Storage y, a continuación, se escriben los datos en la tabla de 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");

Leer de una tabla de Delta Lake

En los siguientes ejemplos se lee el archivo my_delta_table y se muestra su contenido.

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

Escribir en una tabla delta en Hive.

El componente opcional Delta Lake de Dataproc está preconfigurado para funcionar con tablas externas de Hive.

Para obtener más información, consulta el artículo sobre el conector de Hive.

Ejecuta los ejemplos en un cliente de Beeline.

beeline -u jdbc:hive2://

Crea una tabla de Spark Delta Lake.

La tabla de Delta Lake debe crearse con Spark antes de que una tabla externa de Hive pueda hacer referencia a ella.

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 tabla externa de 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';

Notas:

  • La clase io.delta.hive.DeltaStorageHandler implementa las APIs de la fuente de datos de Hive. Puede cargar una tabla Delta y extraer sus metadatos. Si el esquema de la tabla de la instrucción CREATE TABLE no coincide con los metadatos de Delta Lake subyacentes, se produce un error.

Leer datos de una tabla de Delta Lake en Hive.

Para leer datos de una tabla Delta, usa una instrucción SELECT:

SELECT * FROM deltaTable;

Eliminar una tabla de Delta Lake.

Para eliminar una tabla Delta, usa la instrucción DROP TABLE:

DROP TABLE deltaTable;