É 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.
Propriedades relacionadas ao Delta Lake
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
- No Google Cloud console, acesse a página
Criar um cluster do Dataproc.
O painel 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 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çãoCREATE 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;