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.
Propiedades relacionadas con Delta Lake
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
- En la Google Cloud consola, ve a la página de Dataproc
Crear un clúster.
Se selecciona el panel Configurar clúster.
- 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:
- 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 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.DeltaStorageHandlerimplementa 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ónCREATE TABLEno 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;