

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á.

# Trabalhando com uma hierarquia de vários catálogos no AWS Glue Data Catalog com o Spark no Amazon EMR
<a name="emr-multi-catalog"></a>

Você pode registrar seu cluster do Amazon EMR para acessar o AWS Glue Data Catalog, que disponibiliza tabelas e outros recursos de catálogo para vários consumidores. AWS O Glue Data Catalog oferece suporte a uma hierarquia de vários catálogos, que unifica seus dados nos data lakes do Amazon S3. Ele também fornece uma API de metastore do Hive e uma API REST de código aberto do Apache Iceberg para acessar os dados. Esses recursos estão disponíveis para o Amazon EMR e outros serviços, como o Amazon Athena e o Amazon Redshift.

## Como os recursos do catálogo são organizados
<a name="emr-lakehouse-org"></a>

Ao criar recursos no AWS Glue Data Catalog, você pode acessá-los de qualquer mecanismo SQL compatível com a API REST Apache Iceberg ou o metastore Hive. AWS Lake Formation gerencia as permissões.

No AWS Glue Data Catalog, os dados são organizados em uma hierarquia lógica de catálogos, bancos de dados e tabelas:
+ **Catálogo**: um contêiner lógico que contém objetos de um armazenamento de dados, como esquemas ou tabelas. 
+ **Catálogo para armazenar tabelas do Redshift Managed Storage (RMS)**: ao gerenciar catálogos para armazenar tabelas do RMS, você pode acessar essas tabelas usando o Iceberg. 
+ **Banco de dados**: organiza objetos de dados, como tabelas e visualizações, em um catálogo.
+ **Tabelas e visualizações**: objetos de dados em um banco de dados que fornecem uma camada de abstração com um esquema compreensível. Elas fornecem uma camada para acessar dados subjacentes, que podem estar em vários formatos e em diferentes locais.



## Configurar um catálogo de dados para uso com o Amazon EMR
<a name="emr-lakehouse-configuration"></a>

Para começar, você configura o catálogo para oferecer suporte a ferramentas do Amazon EMR. O AWS Glue Data Catalog oferece compatibilidade com o Hive metastore e com o Iceberg REST. APIs 

**Configurar o Amazon EMR com um metastore Hive**

 Para obter informações sobre como configurar isso, consulte [Suporte do AWS Glue Data Catalog para tarefas do Spark](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-data-catalog-hive.html) no Guia do usuário do AWS Glue. Este tópico descreve como configurar o AWS Glue Data Catalog como um metastore do Hive e disponibilizá-lo como um endpoint. Além disso, há documentação do Amazon EMR disponível que mostra como especificar o AWS Glue Data Catalog como metastore do Spark, em Use [the AWS Glue Data Catalog as the Apache](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-glue.html) Hive metastore for Spark.

## Permissões para acessar recursos no AWS Glue Data Catalog
<a name="emr-lakehouse-using-irc-prereqs"></a>

Esta seção descreve os requisitos da política do IAM para usar ferramentas do Amazon EMR com dados de catálogo. Depois de registrar seu cluster no AWS Glue Data Catalog, você precisa das seguintes permissões para descobrir a criação e as alterações no catálogo de dados criado posteriormente: 
+ **cola: GetCatalog**
+ **cola: GetCatalogs**
+ **conjuntos: AssumeRole**
+ **conjuntos: TagSession**
+ **conjuntos: SetContext**
+ **conjuntos: SetSourceIdentity**

Na maioria dos casos, ao atribuir permissões, recomendamos criar um perfil do IAM e atribuir permissões a ele.

Além disso, para consultar os dados do catálogo, você deve definir permissões para o catálogo de dados usando o AWS Lake Formation. Para obter mais informações sobre como definir permissões para catálogos de dados no AWS Lake Formation, consulte [Conceder e revogar permissões em recursos do Catálogo de dados](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-catalog-permissions.html).

Depois de criar e configurar seu cluster e definir permissões em seus objetos de catálogo, você pode enviar trabalhos para consultar e processar dados.

## Configure o Spark para acessar uma hierarquia de vários catálogos no AWS Glue Data Catalog
<a name="emr-lakehouse-using-spark-access"></a>

Com o EMR 7.5, você pode configurar o Spark para usar a hierarquia de vários catálogos do AWS Glue. Uma hierarquia de vários catálogos permite:
+ Traga seus dados do Redshift Managed Storage (RMS), como tabelas, visualizações e visualizações materializadas de data warehouses existentes do Amazon Redshift, para o Glue Data Catalog. AWS Você pode consultar esses objetos usando o EMR no EC2 e o EMR Sem Servidor. 
+ Crie catálogos RMS, AWS Glue Data Catalog e armazene dados no RMS usando o ZeroETL e consulte os dados com mecanismos de consulta compatíveis com o Iceberg.
+ Crie tabelas Iceberg gerenciadas no AWS Glue Data Catalog com gerenciamento de armazenamento completo que inclui compactação, instantâneos e retenção.

### Conectar-se a vários catálogos ao inicializar uma sessão do Spark
<a name="emr-iceberg-initialize-spark-session-spark"></a>

Os exemplos a seguir demonstram como usar o shell interativo do Spark, o envio do Spark ou os notebooks Amazon EMR para trabalhar AWS com a hierarquia de vários catálogos do Glue.

------
#### [ spark-shell ]

1. Conecte-se ao nó principal usando SSH. Para obter mais informações, consulte [Conectar-se ao nó principal usando SSH](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-ssh.html) no *Guia de gerenciamento do Amazon EMR*.

1. Digite o seguinte comando para iniciar o shell do Spark. Para usar a PySpark concha, `spark-shell` substitua por`pyspark`.

   ```
   spark-shell \
       --conf spark.sql.catalog.my_catalog=org.apache.iceberg.spark.SparkCatalog \
       --conf spark.sql.catalog.my_catalog.warehouse=s3://amzn-s3-demo-bucket/prefix/
       --conf spark.sql.catalog.my_catalog.type=glue \
       --conf spark.sql.catalog.my_catalog.glue.id=Glue RMS catalog ID \
       --conf spark.sql.defaultCatalog=my_catalog \
       --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
   ```

------
#### [ spark-submit ]

1. Conecte-se ao nó principal usando SSH. Para obter mais informações, consulte [Conectar-se ao nó principal usando SSH](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-ssh.html) no *Guia de gerenciamento do Amazon EMR*.

1. Insira o comando a seguir para iniciar a sessão do Spark no Spark.

   ```
   spark-submit \
   --conf spark.sql.catalog.my_catalog=org.apache.iceberg.spark.SparkCatalog \
   --conf spark.sql.catalog.my_catalog.warehouse=s3://amzn-s3-demo-bucket1/prefix \
   --conf spark.sql.catalog.my_catalog.type=glue \
   --conf spark.sql.catalog.my_catalog.glue.id=Glue RMS catalog ID \
   --conf spark.sql.defaultCatalog=my_catalog \
   --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
   ```

------
#### [ EMR Studio notebooks ]

Para inicializar uma sessão do Spark usando Cadernos do EMR Studio, configure a sessão do Spark usando o comando mágico `%%configure` no Caderno do Amazon EMR, como no exemplo a seguir. Para obter mais informações, consulte [Use EMR Notebooks magics](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-magics.html#emr-magics) no *Guia de gerenciamento do Amazon EMR*.

```
%%configure -f{
"conf":{
    "spark.sql.catalog.my_catalog":"org.apache.iceberg.spark.SparkCatalog",
    "spark.sql.catalog.my_catalog.type":"glue",
    "spark.sql.catalog.my_catalog.glue.id":"Glue RMS catalog ID",
    "spark.sql.catalog.my_catalog.warehouse":"s3://amzn-s3-demo-bucket1/prefix/",
    "spark.sql.defaultCatalog", "my_catalog",
    "spark.sql.extensions":"org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions"
    }
}
```

------
#### [ CLI ]

Para inicializar uma sessão do Spark usando a CLI, execute o exemplo a seguir. Para obter mais informações sobre como especificar uma classificação de configuração usando a AWS CLI API do Amazon EMR, [consulte](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html) Configurar aplicativos.

```
[
  {
    "Classification": "spark-defaults",
    "Properties": {
      "spark.sql.catalog.my_catalog":"org.apache.iceberg.spark.SparkCatalog",
      "spark.sql.catalog.my_catalog.type":"glue",
      "spark.sql.catalog.my_catalog.glue.id":"Glue RMS catalog ID",
      "spark.sql.catalog.my_catalog.warehouse":"s3://amzn-s3-demo-bucket1/prefix/",
      "spark.sql.defaultCatalog", "my_catalog",
      "spark.sql.extensions":"org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions"
    }
  }
]
```

------

#### Inicialize uma sessão do Spark no Redshift Managed Storage com o Glue Data Catalog AWS
<a name="considerations-multi-catalog-glue-connect"></a>

O exemplo de comando a seguir inicializa uma sessão do Spark com o Catálogo de dados do AWS Glue.

```
spark-sql \
  --conf spark.sql.catalog.rms=org.apache.iceberg.spark.SparkCatalog \
  --conf spark.sql.catalog.rms.type=glue \
  --conf spark.sql.catalog.rms.glue.id=Glue RMS catalog ID \
  --conf spark.sql.defaultCatalog=rms
  --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
```

O exemplo a seguir inicializa uma sessão do Spark usando a API REST Iceberg e o Redshift Managed Storage with Glue Data Catalog. AWS 

```
spark-sql \
  --conf spark.sql.catalog.rms=org.apache.iceberg.spark.SparkCatalog \
  --conf spark.sql.catalog.rms.type=rest \
  --conf spark.sql.catalog.rms.warehouse=glue RMS catalog ID \
  --conf spark.sql.catalog.rms.uri=Glue endpoint URI/iceberg \
  --conf spark.sql.catalog.rms.rest.sigv4-enabled=true \
  --conf spark.sql.catalog.rms.rest.signing-name=glue \
  --conf spark.sql.defaultCatalog=rms \
  --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
```

Para obter mais informações sobre como usar uma hierarquia de vários catálogos do AWS Glue com o Spark Iceberg, consulte [Usar um cluster Iceberg](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-iceberg-use-spark-cluster.html) com o Spark.

## Considerações e limitações de uma configuração de vários catálogos
<a name="considerations-multi-catalog"></a>
+ Não há suporte para o uso de uma hierarquia de vários catálogos com o metastore do Apache Hive.
+ O uso de uma hierarquia de vários catálogos com o Apache Iceberg não oferece suporte para fallback para o metastore do Apache Hive durante o uso do `SparkSessionCatalog`.
+ Clusters do EMR no EC2 com o perfil de Runtime não oferecem suporte à hierarquia de vários catálogos.
+ O EMR em clusters EC2 habilitados sem suporte à hierarquia de AWS Lake Formation vários catálogos.