

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 o Delta Lake OSS com o EMR Sem Servidor
<a name="using-delta-lake"></a>

## Amazon EMR 6.9.0 e versões posteriores
<a name="using-delta-lake-6.9.0"></a>

**nota**  
O Amazon EMR 7.0.0 e versões superiores usam o Delta Lake 3.0.0, que renomeia o arquivo `delta-core.jar` como `delta-spark.jar`. Se você usa o Amazon EMR 7.0.0 ou superior, certifique-se de especificar `delta-spark.jar` nas configurações.

O Amazon EMR 6.9.0 e versões posteriores incluem o Delta Lake, então você não precisa mais empacotar o Delta Lake por conta própria ou fornecer o sinalizador `--packages` com trabalhos do EMR Sem Servidor.

1. Ao enviar trabalhos do EMR Sem Servidor, certifique-se de ter as propriedades de configuração a seguir e incluir os parâmetros no campo `sparkSubmitParameters`.

   ```
   --conf spark.jars=/usr/share/aws/delta/lib/delta-core.jar,/usr/share/aws/delta/lib/delta-storage.jar
       --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension
       --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog
   ```

1. Crie um `delta_sample.py` local para testar a criação e a leitura de uma tabela do Delta.

   ```
   # delta_sample.py
       from pyspark.sql import SparkSession
       
       import uuid
       
       url = "s3://{{amzn-s3-demo-bucket}}/delta-lake/output/%s/" % str(uuid.uuid4())
       spark = SparkSession.builder.appName("DeltaSample").getOrCreate()
       
       ## creates a Delta table and outputs to target S3 bucket
       spark.range(5).write.format("delta").save(url)
       
       ## reads a Delta table and outputs to target S3 bucket
       spark.read.format("delta").load(url).show
   ```

1. Usando o AWS CLI, faça o upload do `delta_sample.py` arquivo em seu bucket do Amazon S3. Em seguida, use o comando `start-job-run` para enviar um trabalho a uma aplicação existente do EMR Sem Servidor.

   ```
   aws s3 cp delta_sample.py s3://{{amzn-s3-demo-bucket}}/code/
       
       aws emr-serverless start-job-run \
           --application-id {{application-id}} \
           --execution-role-arn {{job-role-arn}} \
           --name emr-delta \
           --job-driver '{
               "sparkSubmit": {
                   "entryPoint": "s3://{{amzn-s3-demo-bucket}}/code/delta_sample.py",
                   "sparkSubmitParameters": "--conf spark.jars=/usr/share/aws/delta/lib/delta-core.jar,/usr/share/aws/delta/lib/delta-storage.jar --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog"
               }
           }'
   ```

Para usar bibliotecas do Python com o Delta Lake, adicione a biblioteca `delta-core` [empacotando-a como uma dependência](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/using-python-libraries.html) ou [usando-a como uma imagem personalizada](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/using-custom-images.html).

Como alternativa, você pode usar `SparkContext.addPyFile` para adicionar as bibliotecas do Python do arquivo JAR `delta-core`:

```
import glob
from pyspark.sql import SparkSession

spark = SparkSession.builder.getOrCreate()
spark.sparkContext.addPyFile(glob.glob("/usr/share/aws/delta/lib/delta-core_*.jar")[0])
```

## Amazon EMR 6.8.0 e versões anteriores
<a name="using-delta-lake-6.8.0"></a>

Se estiver usando o Amazon EMR 6.8.0 ou inferior, siga estas etapas para usar o OSS do Delta Lake com as aplicações do EMR Sem Servidor.

1. Para criar uma versão de código aberto do [Delta Lake](https://delta.io/) que seja compatível com a versão do Spark em seu aplicativo Amazon EMR Serverless, navegue até [o GitHub Delta e siga as instruções](https://github.com/delta-io/delta).

1. Faça o upload das bibliotecas do Delta Lake em um bucket do Amazon S3 em seu. Conta da AWS

1. Ao enviar trabalhos do EMR Sem Servidor na configuração da aplicação, inclua os arquivos JAR do Delta Lake que agora estão no bucket.

   ```
   --conf spark.jars=s3://{{amzn-s3-demo-bucket}}/jars/delta-core_2.12-1.1.0.jar
   ```

1. Para garantir que você possa ler e gravar em uma tabela Delta, execute um PySpark teste de amostra.

   ```
   from pyspark import SparkConf, SparkContext
       from pyspark.sql import HiveContext, SparkSession
       
       import uuid
       
       conf = SparkConf()
       sc = SparkContext(conf=conf)
       sqlContext = HiveContext(sc)
       
       url = "s3://{{amzn-s3-demo-bucket}}/delta-lake/output/1.0.1/%s/" % str(uuid.uuid4())
       
       ## creates a Delta table and outputs to target S3 bucket
       session.range(5).write.format("delta").save(url)
       
       ## reads a Delta table and outputs to target S3 bucket
       session.read.format("delta").load(url).show
   ```