É possível instalar outros componentes, como o Delta Lake, ao criar um cluster do Dataproc usando o recurso Componentes opcionais. Nesta página, descrevemos como instalar o componente Delta Lake em um cluster do Dataproc.
Quando instalado em um cluster do Dataproc, o componente 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 compatíveis do Dataproc
É possível instalar o componente Delta Lake em clusters do Dataproc criados com a versão 2.2.46 e 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 de imagem do Dataproc.
Propriedades relacionadas ao Delta Lake
Quando você cria um cluster do Dataproc com o componente Delta Lake ativado, as propriedades do Spark a seguir 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 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 vai ficar.
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 Spark DataFrame
para gravar dados em uma tabela do Delta Lake. Os exemplos a seguir criam um DataFrame
com dados de amostra, criam 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
Grave 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 o conector do Hive.
Execute os exemplos em um cliente de linha reta.
beeline -u jdbc:hive2://
Crie 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");
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 da 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;
Excluir uma tabela do Delta Lake.
Para excluir uma tabela Delta, use a instrução DROP TABLE
:
DROP TABLE deltaTable;