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