Componente opcional do Delta Lake do Dataproc

Pode instalar componentes adicionais, como o Delta Lake, quando cria um cluster do Dataproc através da funcionalidade Componentes opcionais. Esta página descreve como pode instalar opcionalmente o componente Delta Lake num cluster do Dataproc.

Quando instalado num cluster do Dataproc, o componente Delta Lake instala bibliotecas do Delta Lake e configura o Spark e o Hive no cluster para funcionar com o Delta Lake.

Versões de imagens do Dataproc compatíveis

Pode instalar o componente Delta Lake em clusters do Dataproc criados com a versão 2.2.46 da imagem do Dataproc e versões posteriores da imagem.

Consulte o artigo Versões do Dataproc suportadas para ver a versão do componente Delta Lake incluída nos lançamentos de imagens do Dataproc.

Quando cria um cluster do Dataproc com o componente Delta Lake ativado, as seguintes propriedades do Spark são configuradas para funcionar com o Delta Lake.

Ficheiro de configuração Propriedade Valor predefinido
/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

Instale o componente

Instale o componente quando criar um cluster do Dataproc através da Google Cloud consola, da Google Cloud CLI ou da API Dataproc.

Consola

  1. Na Google Cloud consola, aceda a Dataproc página Criar um cluster.

    Aceda a Criar um cluster

    O painel Configurar cluster está selecionado.

  2. Na secção Componentes, em Componentes opcionais, selecione Delta Lake e outros componentes opcionais para instalar no cluster.

CLI gcloud

Para criar um cluster do Dataproc que inclua o componente Delta Lake, use o comando gcloud dataproc clusters create com a flag --optional-components.

gcloud dataproc clusters create CLUSTER_NAME \
    --optional-components=DELTA \
    --region=REGION \
    ... other flags

Notas:

  • CLUSTER_NAME: especifique o nome do cluster.
  • REGION: especifique uma região do Compute Engine onde o cluster vai estar localizado.

API REST

O componente Delta Lake pode ser especificado através da API Dataproc com o SoftwareConfig.Component como parte de um pedido clusters.create.

Exemplos de utilização

Esta secção apresenta exemplos de leitura e escrita de dados com tabelas do Delta Lake.

Tabela do Delta Lake

Escreva numa tabela Delta Lake

Pode usar o Spark DataFrame para escrever dados numa tabela do Delta Lake. Os exemplos seguintes criam um DataFrame com dados de amostra, criam uma tabela my_delta_table Delta Lake no Cloud Storage e, em seguida, escrevem os dados na tabela 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");

Ler a partir de uma tabela Delta Lake

Os exemplos seguintes leem o elemento my_delta_table e apresentam o respetivo conteúdo.

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 com Delta Lake

Escrever numa tabela Delta no Hive.

O componente opcional Dataproc Delta Lake está pré-configurado para funcionar com tabelas externas do Hive.

Para mais informações, consulte o artigo Conetor do Hive.

Execute os exemplos num cliente Beeline.

beeline -u jdbc:hive2://

Crie uma tabela do Spark Delta Lake.

A tabela Delta Lake tem de ser criada com o Spark antes de uma tabela externa do Hive poder fazer referência à mesma.

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");

Crie uma tabela externa do 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:

  • A classe io.delta.hive.DeltaStorageHandler implementa as APIs de origem de dados do Hive. Pode carregar uma tabela Delta e extrair os respetivos metadados. Se o esquema da tabela na declaração CREATE TABLE não for consistente com os metadados subjacentes do Delta Lake, é acionado um erro.

Ler a partir de uma tabela Delta Lake no Hive.

Para ler dados de uma tabela Delta, use uma declaração SELECT:

SELECT * FROM deltaTable;

Elimine uma tabela Delta Lake.

Para eliminar uma tabela Delta, use a declaração DROP TABLE:

DROP TABLE deltaTable;