Puedes instalar componentes adicionales, como Delta Lake, cuando creas un clúster de Dataproc con la función de componentes opcionales. En esta página, se describe cómo instalar opcionalmente el componente Delta Lake en un clúster de Dataproc.
Cuando se instala en un clúster de Dataproc, el componente de Delta Lake instala bibliotecas de Delta Lake y configura Spark y Hive en el clúster para que funcionen con Delta Lake.
Versiones con imágenes de Dataproc compatibles
Puedes instalar el componente de Delta Lake en clústeres de Dataproc creados con la versión de imagen 2.2.46 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 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 Dataproc con la consola de Google Cloud , Google Cloud CLI o la API de Dataproc.
Console
- En la consola de Google Cloud , ve a la página Create a cluster de Dataproc.
Se selecciona el panel Configura el 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 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 a través de 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
Cómo escribir 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 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 de Delta en Hive.
El componente opcional de Delta Lake de Dataproc está preconfigurado para trabajar 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 para 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 instrucciónCREATE TABLE
no es coherente con los metadatos subyacentes de Delta Lake, 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;
Cómo descartar una tabla de Delta Lake
Para descartar una tabla de Delta, usa la sentencia DROP TABLE
:
DROP TABLE deltaTable;