Componente Delta Lake opcional do Dataproc

É possível instalar componentes adicionais, como o Delta Lake, ao criar um cluster do Dataproc usando o recurso Componentes opcionais. Nesta página, você verá como instalar o componente Delta Lake em um cluster do Dataproc.

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

Versões de imagem do Dataproc compatíveis

É possível 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.

Consulte Versões compatíveis do Dataproc para a versão do componente Delta Lake incluída nas versões de imagem do Dataproc.

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

Arquivo de configuração Propriedade Valor padrão
/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 o componente

Instale o componente ao criar um cluster do Dataproc usando o console Google Cloud , a Google Cloud CLI ou a API Dataproc.

Console

  1. No Google Cloud console, acesse a página Criar um cluster do Dataproc.

    Acessar "Criar um cluster"

    O painel Configurar cluster está selecionado.

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

CLI da 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

Observações:

  • CLUSTER_NAME: especifique o nome do cluster.
  • REGION: especifique uma região do Compute Engine em que o cluster será localizado.

API REST

O componente Delta Lake pode ser especificado por meio da API Dataproc usando o SoftwareConfig.Component como parte de uma solicitação clusters.create.

Exemplos de uso

Esta seção fornece exemplos de leitura e gravação de dados usando tabelas do Delta Lake.

Tabela do Delta Lake

Gravar em uma tabela do Delta Lake

É possível usar o DataFrame do Spark para gravar dados em uma tabela do Delta Lake. Os exemplos a seguir criam um DataFrame com dados de amostra, uma tabela my_delta_table do Delta Lake no Cloud Storage e gravam os dados na tabela do 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 de uma tabela do Delta Lake

Os exemplos a seguir leem o my_delta_table e mostram o conteúdo dele.

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

Gravar em uma tabela Delta no Hive.

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

Para mais informações, consulte Conector do Hive.

Execute os exemplos em um cliente beeline.

beeline -u jdbc:hive2://

Crie uma tabela do Spark Delta Lake.

A tabela do Delta Lake precisa ser criada usando o Spark antes que uma tabela externa do Hive possa fazer referência a ela.

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';

Observações:

  • A classe io.delta.hive.DeltaStorageHandler implementa as APIs de fonte de dados do Hive. Ele pode carregar uma tabela Delta e extrair os metadados dela. Se o esquema da tabela na instrução CREATE TABLE não for consistente com os metadados do Delta Lake, um erro será gerado.

Ler de uma tabela do Delta Lake no Hive.

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

SELECT * FROM deltaTable;

Exclui uma tabela do Delta Lake.

Para descartar uma tabela Delta, use a instrução DROP TABLE:

DROP TABLE deltaTable;