Trabalhando com uma hierarquia de vários catálogos no AWS Glue Data Catalog com o Spark na Amazon EMR - 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á.

Trabalhando com uma hierarquia de vários catálogos no AWS Glue Data Catalog com o Spark na Amazon EMR

Você pode registrar seu EMR cluster da Amazon para acessar o AWS Glue Data Catalog, que disponibiliza tabelas e outros recursos do 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 um metastore Hive API e um Apache Iceberg REST API de código aberto para acessar os dados. Esses recursos estão disponíveis para a Amazon EMR e outros serviços, como Amazon Athena o Amazon Redshift.

Como os recursos do catálogo são organizados

Ao criar recursos no AWS Glue Data Catalog, você pode acessá-los de qualquer SQL mecanismo compatível com o metastore Apache Iceberg REST API ou 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 RMS tabelas, 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. Eles fornecem uma camada para acessar os dados subjacentes, que podem estar em vários formatos e em diferentes locais.

Configurando um catálogo de dados para uso com a Amazon EMR

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

Configurando a Amazon EMR com uma metastore Hive

Para obter informações sobre como configurar isso, consulte Suporte do AWS Glue Data Catalog para tarefas do Spark 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á EMR documentação da Amazon disponível que mostra como especificar o AWS Glue Data Catalog como um metastore do Spark, em Use the AWS Glue Data Catalog as the Apache Hive metastore for Spark.

Permissões para acessar recursos no AWS Glue Data Catalog

Esta seção descreve os requisitos da IAM política para usar EMR as ferramentas da Amazon com dados do 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 uma IAM função e atribuir permissões a ela.

Além disso, para consultar dados do catálogo, você deve definir permissões para o catálogo de dados usando AWS Lake Formation. Para obter mais informações sobre como definir permissões para catálogos de dados em AWS Lake Formation, consulte Conceder e revogar permissões em recursos do Catálogo de Dados.

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

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 que você:

  • Traga seus dados do Redshift Managed Storage (RMS), como tabelas, visualizações e visualizações materializadas dos armazéns de dados existentes do Amazon Redshift, para o Glue Data Catalog. AWS Você pode consultar esses objetos usando EMR on EC2 e EMR Serverless.

  • Crie RMS catálogos, AWS Glue Data Catalog e armazene dados RMS usando o Zero ETL 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.

Conectando-se a vários catálogos ao inicializar uma sessão do Spark

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

spark-shell
  1. Conecte-se ao nó principal usando SSH o. Para obter mais informações, consulte Conecte-se ao nó principal usando SSH o Amazon EMR Management Guide.

  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.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 o. Para obter mais informações, consulte Conecte-se ao nó principal usando SSH o Amazon EMR Management Guide.

  2. Digite o comando a seguir para iniciar a sessão do Spark para o 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 notebooks EMR Studio, configure sua sessão do Spark usando o comando %%configure mágico em seu EMR notebook Amazon, como no exemplo a seguir. Para obter mais informações, consulte Use EMR Notebooks magics no Amazon EMR Management Guide.

%%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 oCLI, execute o exemplo a seguir. Para obter mais informações sobre como especificar uma classificação de configuração usando o AWS CLI e a Amazon EMRAPI, consulte 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

O exemplo de comando a seguir inicializa uma sessão do Spark com o AWS Glue Data Catalog.

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 o Iceberg e o REST API 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 com o Spark.

Considerações e limitações para uma configuração de vários catálogos

  • O uso de uma hierarquia de vários catálogos com o metastore Apache Hive não é suportado.

  • O uso de uma hierarquia de vários catálogos com o Apache Iceberg não oferece suporte ao fallback para o metastore Apache Hive durante o uso. SparkSessionCatalog

  • EMRem EC2 clusters com a função Runtime não oferecem suporte à hierarquia de vários catálogos.

  • EMRem EC2 clusters habilitados com AWS Lake Formation não oferecem suporte à hierarquia de vários catálogos.