Usar um cluster do Delta Lake com o Spark - Amazon EMR

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usar um cluster do Delta Lake com o Spark

A partir da versão 6.9.0 do Amazon EMR, é possível usar o Delta Lake com seu cluster do Spark sem a necessidade de ações de bootstrap. Nas versões 6.8.0 e anteriores do Amazon EMR, é possível usar ações de bootstrap para pré-instalar as dependências necessárias.

Os exemplos a seguir usam a AWS CLI para trabalhar com o Delta Lake em um cluster do Amazon EMR Spark.

Para usar o Delta Lake no Amazon EMR com a AWS Command Line Interface, primeiro crie um cluster. Para obter informações sobre como especificar a classificação Delta Lake com a AWS Command Line Interface, consulte Fornecer uma configuração usando a AWS Command Line Interface ao criar um cluster ou Fornecer uma configuração usando o SDK do Java ao criar um cluster.

  1. Crie um arquivo configurations.json, com o seguinte conteúdo:

    [{"Classification":"delta-defaults", "Properties":{"delta.enabled":"true"} }]
  2. Crie um cluster com a configuração a seguir, substituindo o bucket path do Amazon S3 de exemplo e a subnet ID por suas informações.

    aws emr create-cluster --release-label emr-6.9.0 --applications Name=Spark --configurations file://delta_configurations.json --region us-east-1 --name My_Spark_Delta_Cluster --log-uri s3://amzn-s3-demo-bucket/ --instance-type m5.xlarge --instance-count 2 --service-role EMR_DefaultRole_V2 --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetId=subnet-1234567890abcdef0

    Como alternativa, é possível criar um cluster do Amazon EMR e uma aplicação Spark com os seguintes arquivos como dependências JAR em um trabalho do Spark:

    /usr/share/aws/delta/lib/delta-core.jar, /usr/share/aws/delta/lib/delta-storage.jar, /usr/share/aws/delta/lib/delta-storage-s3-dynamodb.jar
    nota

    Se você usa as versões 6.9.0 ou superiores do Amazon EMR, use /usr/share/aws/delta/lib/delta-spark.jar em vez de /usr/share/aws/delta/lib/delta-core.jar.

    Para obter mais informações, consulte Submitting Applications.

    Para incluir uma dependência de jar no trabalho do Spark, é possível adicionar as seguintes propriedades de configuração à aplicação Spark:

    --conf “spark.jars=/usr/share/aws/delta/lib/delta-core.jar, /usr/share/aws/delta/lib/delta-storage.jar, /usr/share/aws/delta/lib/delta-storage-s3-dynamodb.jar"

    Para obter mais informações sobre as dependências de trabalhos do Spark, consulte Dependency Management.

    Se você usa as versões 6.9.0 ou superiores do Amazon EMR, adicione a configuração /usr/share/aws/delta/lib/delta-spark.jar.

    --conf “spark.jars=/usr/share/aws/delta/lib/delta-spark.jar, /usr/share/aws/delta/lib/delta-storage.jar, /usr/share/aws/delta/lib/delta-storage-s3-dynamodb.jar"

Inicializar uma sessão do Spark para Delta Lake

Os exemplos a seguir mostram como iniciar o shell interativo do Spark, usar o envio do Spark ou usar os Cadernos do Amazon EMR para trabalhar com o Delta Lake no Amazon EMR.

spark-shell
  1. Conectar-se ao nó primário usando SSH. Para obter mais informações, consulte Connect to the primary node using SSH no Guia de gerenciamento do Amazon EMR.

  2. Digite o seguinte comando para iniciar o shell do Spark. Para usar a PySpark concha, spark-shell substitua porpyspark.

    spark-shell \ --conf "spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension" \ --conf "spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog"

    Se você executa as versões 6.15.0 ou superiores do Amazon EMR, você também deve usar as configurações a seguir para utilizar o controle de acesso refinado baseado no Lake Formation com o Delta Lake.

    spark-shell \ --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension,com.amazonaws.emr.recordserver.connector.spark.sql.RecordServerSQLExtension \ --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog \ --conf spark.sql.catalog.spark_catalog.lf.managed=true
spark-submit
  1. Conectar-se ao nó primário usando SSH. Para obter mais informações, consulte Connect to the primary node using SSH no Guia de gerenciamento do Amazon EMR.

  2. Insira o comando a seguir para iniciar a sessão do Spark no Delta Lake.

    spark-submit —conf "spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension" —conf "spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog"

    Se você executa as versões 6.15.0 ou superiores do Amazon EMR, você também deve usar as configurações a seguir para utilizar o controle de acesso refinado baseado no Lake Formation com o Delta Lake.

    spark-submit \ ` --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension,com.amazonaws.emr.recordserver.connector.spark.sql.RecordServerSQLExtension --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog \ --conf spark.sql.catalog.spark_catalog.lf.managed=true
EMR Studio notebooks

Para inicializar uma sessão do Spark usando Cadernos do Amazon EMR Studio, configure a sessão do Spark usando o comando magic %%configure no Caderno do Amazon EMR, como no exemplo a seguir. Para obter mais informações, consulte Use EMR Notebooks magics no Guia de gerenciamento do Amazon EMR.

%%configure -f { "conf": { "spark.sql.extensions": "io.delta.sql.DeltaSparkSessionExtension", "spark.sql.catalog.spark_catalog": "org.apache.spark.sql.delta.catalog.DeltaCatalog" } }

Se você executa as versões 6.15.0 ou superiores do Amazon EMR, você também deve usar as configurações a seguir para utilizar o controle de acesso refinado baseado no Lake Formation com o Delta Lake.

%%configure -f { "conf": { "spark.sql.extensions": "io.delta.sql.DeltaSparkSessionExtension,com.amazonaws.emr.recordserver.connector.spark.sql.RecordServerSQLExtension", "spark.sql.catalog.spark_catalog": "org.apache.spark.sql.delta.catalog.DeltaCatalog", "spark.sql.catalog.spark_catalog.lf.managed": "true" } }

Gravar em uma tabela do Delta Lake

O exemplo a seguir mostra como criar um DataFrame e gravá-lo como conjunto de dados do Delta Lake. O exemplo mostra como trabalhar com conjuntos de dados com o shell Spark enquanto estiver conectado ao nó primário usando SSH como usuário padrão do hadoop.

nota

Para colar exemplos de código no shell do Spark, digite :paste no prompt, cole o exemplo e pressione CTRL + D.

PySpark

O Spark inclui um shell baseado em Python, pyspark, que você pode usar para gerar protótipos de programas Spark gravados em Python. Assim como com spark-shell, invoque pyspark no nó primário.

## Create a DataFrame data = spark.createDataFrame([("100", "2015-01-01", "2015-01-01T13:51:39.340396Z"), ("101", "2015-01-01", "2015-01-01T12:14:58.597216Z"), ("102", "2015-01-01", "2015-01-01T13:51:40.417052Z"), ("103", "2015-01-01", "2015-01-01T13:51:40.519832Z")], ["id", "creation_date", "last_update_time"]) ## Write a DataFrame as a Delta Lake dataset to the S3 location spark.sql("""CREATE TABLE IF NOT EXISTS delta_table (id string, creation_date string, last_update_time string) USING delta location 's3://amzn-s3-demo-bucket/example-prefix/db/delta_table'"""); data.writeTo("delta_table").append()
Scala
import org.apache.spark.sql.SaveMode import org.apache.spark.sql.functions._ // Create a DataFrame val data = Seq(("100", "2015-01-01", "2015-01-01T13:51:39.340396Z"), ("101", "2015-01-01", "2015-01-01T12:14:58.597216Z"), ("102", "2015-01-01", "2015-01-01T13:51:40.417052Z"), ("103", "2015-01-01", "2015-01-01T13:51:40.519832Z")).toDF("id", "creation_date", "last_update_time") // Write a DataFrame as a Delta Lake dataset to the S3 location spark.sql("""CREATE TABLE IF NOT EXISTS delta_table (id string, creation_date string, last_update_time string) USING delta location 's3://amzn-s3-demo-bucket/example-prefix/db/delta_table'"""); data.write.format("delta").mode("append").saveAsTable("delta_table")
SQL
-- Create a Delta Lake table with the S3 location CREATE TABLE delta_table(id string, creation_date string, last_update_time string) USING delta LOCATION 's3://amzn-s3-demo-bucket/example-prefix/db/delta_table'; -- insert data into the table INSERT INTO delta_table VALUES ("100", "2015-01-01", "2015-01-01T13:51:39.340396Z"), ("101", "2015-01-01", "2015-01-01T12:14:58.597216Z"), ("102", "2015-01-01", "2015-01-01T13:51:40.417052Z"), ("103", "2015-01-01", "2015-01-01T13:51:40.519832Z");

Ler uma tabela do Delta Lake

PySpark
ddf = spark.table("delta_table") ddf.show()
Scala
val ddf = spark.table("delta_table") ddf.show()
SQL
SELECT * FROM delta_table;
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy