Este documento explica como instalar e configurar o Delta Lake componente opcional em um cluster do Dataproc. Quando ativado, o componente do Delta Lake instala as bibliotecas necessárias e configura o Spark e o Hive para trabalhar com o Delta Lake.
Para saber mais sobre outros componentes opcionais disponíveis no Dataproc, consulte Componentes opcionais disponíveis.
Versões de imagem do Dataproc compatíveis
É possível instalar o componente do Delta Lake em clusters do Dataproc criados com a versão 2.2.46 e versões posteriores da imagem do Dataproc.
Consulte Versões compatíveis do Dataproc para conferir a versão do componente do Delta Lake incluída nas versões da imagem do Dataproc.
Propriedades relacionadas ao Delta Lake
Ao criar um cluster do Dataproc com o componente do Delta Lake ativado, as seguintes propriedades do Spark são configuradas para funcionar 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 Google Cloud console, a CLI do Google Cloud ou a API Dataproc.
Console
- No Google Cloud console, acesse a página do Dataproc
Criar um cluster.
Acessar a página "Criar um cluster"
O painho Configurar cluster está selecionado.
- 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 do 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 do Delta Lake pode ser especificado pela 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, criam uma tabela do Delta Lake my_delta_table 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 a my_delta_table e mostram o conteúdo dela.
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 Delta Lake do Dataproc é 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://Criar uma tabela do Delta Lake do Spark.
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");
Criar 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.DeltaStorageHandlerimplementa as APIs de origem de dados do Hive. Ela pode carregar uma tabela Delta e extrair os metadados dela. Se o esquema da tabela na instruçãoCREATE TABLEnão for consistente com os metadados do Delta Lake subjacente, 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;
Soltar uma tabela do Delta Lake.
Para soltar uma tabela Delta, use a instrução DROP TABLE:
DROP TABLE deltaTable;