Instala el componente de Delta Lake en el clúster de Dataproc

En este documento, se explica cómo instalar y configurar el componente opcional de Delta Lake en un clúster de Dataproc. Cuando está habilitado, el componente de Delta Lake instala las bibliotecas necesarias y configura Spark y Hive para que funcionen con Delta Lake.

Para obtener más información sobre otros componentes opcionales disponibles en Dataproc, consulta Componentes opcionales disponibles.

Versiones de imágenes de Dataproc compatibles

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

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

Cuando creas un clúster de Dataproc con el componente de Delta Lake habilitado, las siguientes propiedades de Spark se configuran 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

Instala el componente

Instala el componente cuando crees un clúster de Dataproc con la Google Cloud consola, la CLI de gcloud o la API de Dataproc.

Console

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

    Ir a Crear un clúster

    Se selecciona el panel Configurar clúster.

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

gcloud CLI

Para crear un clúster de Dataproc que incluya el componente de 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:

API de REST

El componente de Delta Lake se puede especificar con la API de 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 de Delta Lake.

Tabla de Delta Lake

Escribe en una tabla de Delta Lake

Puedes usar el DataFrame de Spark para escribir datos en una tabla de Delta Lake. En los siguientes ejemplos, se crea un DataFrame con datos de muestra, se crea una tabla de Delta Lake my_delta_table en Cloud Storage y, luego, 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");

Lee desde una tabla de Delta Lake

En los siguientes ejemplos, se lee la 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

Escribe en una tabla de Delta en Hive.

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

Para obtener más información, consulta Conector de Hive.

Ejecuta los ejemplos en un cliente de Beeline.

beeline -u jdbc:hive2://

Crea una tabla de Delta Lake de Spark.

La tabla de Delta Lake se debe crear 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 origen de datos de Hive. Puede cargar una tabla de Delta y extraer sus metadatos. Si el esquema de la tabla en la instrucción CREATE TABLE no es coherente con los metadatos subyacentes de Delta Lake, se muestra un error.

Lee desde una tabla de Delta Lake en Hive.

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

SELECT * FROM deltaTable;

Quita una tabla de Delta Lake.

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

DROP TABLE deltaTable;