Neste documento, explicamos como instalar e configurar o componente opcional Delta Lake em um cluster do Serviço gerenciado para Apache Spark. Quando ativado, o componente 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 Serviço Gerenciado para Apache Spark, consulte Componentes opcionais disponíveis.
Versões de imagem compatíveis do Serviço Gerenciado para Apache Spark
É possível instalar o componente Delta Lake em clusters do Serviço Gerenciado para Apache Spark criados com a versão de imagem 2.2.46 e posteriores do Serviço Gerenciado para Apache Spark.
Consulte as versões compatíveis do Serviço Gerenciado para Apache Spark para saber a versão do componente Delta Lake incluída nas versões de imagem do Serviço Gerenciado para Apache Spark.
Propriedades relacionadas ao Delta Lake
Quando você cria um cluster do Serviço Gerenciado para Apache Spark com o componente 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 Serviço gerenciado para Apache Spark usando o console Google Cloud , a Google Cloud CLI ou a API Dataproc.
Console
- No console Google Cloud , acesse a página do Serviço Gerenciado para Apache Spark
Criar um cluster.
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 Serviço gerenciado para Apache Spark 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 Delta Lake do Serviço Gerenciado para Apache Spark é 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.DeltaStorageHandlerimplementa 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 TABLEnã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;