Instala el componente de Delta Lake en un clúster

El componente opcional de Delta Lake te permite ejecutar cargas de trabajo de Delta Lake en un clúster de Managed Service para Apache Spark. Cuando se habilita, el componente instala las bibliotecas necesarias y configura Spark y Hive para que funcionen con Delta Lake.

Delta Lake 4.x, que se incluye en la versión de imagen 3.0 de Managed Service para Apache Spark, no admite Hive. Para obtener más información sobre otros componentes opcionales disponibles en Managed Service para Apache Spark, consulta Componentes opcionales disponibles.

Versiones de imágenes de Managed Service para Apache Spark compatibles

Puedes instalar el componente de Delta Lake en los clústeres de Managed Service para Apache Spark creados con la versión de imagen 2.2.46 y las versiones de imagen posteriores de Managed Service para Apache Spark.

Consulta Versiones compatibles de Managed Service para Apache Spark para conocer la versión del componente de Delta Lake que se incluye en las versiones de imágenes de Managed Service para Apache Spark.

Cuando creas un clúster de Managed Service para Apache Spark con el componente Delta Lake habilitado, las siguientes propiedades de Spark se configuran para funcionar 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 Managed Service para Apache Spark con la consola de Google Cloud , Google Cloud CLI o la API de Dataproc.

Consola deGoogle Cloud

  1. En la consola de Google Cloud , abre la página Crear clúster.
  2. Haz clic en Configuración adicional para expandir esa sección.
  3. Edita los componentes opcionales.
  4. En el panel que se abre, selecciona la casilla de verificación de Delta.
  5. Haz clic en Guardar.

gcloud CLI

Para crear un clúster de Managed Service para Apache Spark 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:

  • 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 de REST

El componente Delta Lake se puede especificar a través de la API de Dataproc con 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 long,
    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 el 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 Delta en Hive.

El componente opcional de Delta Lake de Managed Service para Apache Spark 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 la fuente de datos de Hive. Puede cargar una tabla Delta y extraer sus metadatos. Si el esquema de la tabla en la sentencia CREATE TABLE no es coherente con los metadatos de Delta Lake subyacentes, se genera un error.

Lee desde una tabla de Delta Lake en Hive.

Para leer datos de una tabla de Delta, usa una sentencia SELECT:

SELECT * FROM deltaTable;

Borra una tabla de Delta Lake.

Para descartar una tabla de Delta, usa la sentencia DROP TABLE:

DROP TABLE deltaTable;