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.
Propriedades relacionadas com o Delta Lake
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
- Na Google Cloud consola, aceda a Dataproc
página Criar um cluster.
O painel Configurar cluster está selecionado.
- 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çãoCREATE 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;