Utilizzo di una gerarchia multicatalogo in AWS Glue Data Catalog with Spark su Amazon EMR - Amazon EMR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo di una gerarchia multicatalogo in AWS Glue Data Catalog with Spark su Amazon EMR

Puoi registrare il tuo EMR cluster Amazon per accedere al AWS Glue Data Catalog, che rende disponibili tabelle e altre risorse del catalogo a vari consumatori. AWS Glue Data Catalog supporta una gerarchia multicatalogo, che unifica i dati tra i data lake Amazon S3. Fornisce inoltre sia un metastore Hive che un Apache Iceberg open source per API l'accesso ai dati. REST API Queste funzionalità sono disponibili per Amazon EMR e altri servizi come Amazon Athena Amazon Redshift.

Come sono organizzate le risorse del catalogo

Quando crei risorse nel AWS Glue Data Catalog, puoi accedervi da qualsiasi SQL motore che supporti il metastore Apache Iceberg REST API o Hive. AWS Lake Formation gestisce le autorizzazioni.

In AWS Glue Data Catalog, i dati sono organizzati in una gerarchia logica di cataloghi, database e tabelle:

  • Catalogo: un contenitore logico che contiene oggetti provenienti da un archivio dati, come schemi o tabelle.

  • Catalogo per archiviare le tabelle Redshift Managed Storage (RMS) — Quando gestisci i cataloghi per archiviare le RMS tabelle, puoi accedere a queste tabelle utilizzando Iceberg.

  • Database: organizza oggetti di dati come tabelle e viste in un catalogo.

  • Tabelle e viste: oggetti di dati in un database che forniscono un livello di astrazione con uno schema comprensibile. Forniscono un livello per accedere ai dati sottostanti, che possono essere in vari formati e in diverse posizioni.

Configurazione di un catalogo di dati da utilizzare con Amazon EMR

Per iniziare, configura il catalogo per supportare EMR gli strumenti Amazon. Il AWS Glue Data Catalog offre la compatibilità con i metastore Hive e la compatibilità con Iceberg. REST APIs

Configurazione di Amazon EMR con un metastore Hive

Per informazioni su come configurarlo, consulta il supporto di AWS Glue Data Catalog per i job Spark nella AWS Glue User Guide. Questo argomento descrive come configurare AWS Glue Data Catalog come metastore Hive e renderlo disponibile come endpoint. Inoltre, è disponibile EMR la documentazione di Amazon che mostra come specificare AWS Glue Data Catalog come metastore Spark, in Use the AWS Glue Data Catalog come metastore Apache Hive per Spark.

Autorizzazioni per l'accesso alle risorse in AWS Glue Data Catalog

Questa sezione descrive i requisiti delle IAM policy per l'utilizzo EMR degli strumenti di Amazon con i dati del catalogo. Dopo aver registrato il cluster nel AWS Glue Data Catalog, sono necessarie le seguenti autorizzazioni per scoprire la creazione e le modifiche al catalogo di dati creato successivamente:

  • colla: GetCatalog

  • colla: GetCatalogs

  • set: AssumeRole

  • set: TagSession

  • set: SetContext

  • set: SetSourceIdentity

Nella maggior parte dei casi, quando si assegnano le autorizzazioni, si consiglia di creare un IAM ruolo e di assegnargli le autorizzazioni.

Inoltre, per interrogare i dati del catalogo, è necessario impostare le autorizzazioni per l'utilizzo del catalogo dati. AWS Lake Formation Per ulteriori informazioni sull'impostazione delle autorizzazioni per i cataloghi di dati in AWS Lake Formation, consulta Concessione e revoca delle autorizzazioni sulle risorse del Catalogo dati.

Dopo aver creato e configurato il cluster e impostato le autorizzazioni per gli oggetti del catalogo, puoi inviare lavori per interrogare ed elaborare i dati.

Configura Spark per accedere a una gerarchia multicatalogo in AWS Glue Data Catalog

Con EMR 7.5, puoi configurare Spark per utilizzare la gerarchia multicatalogo di AWS Glue. Una gerarchia multicatalogo ti consente di:

  • Trasferisci i dati di Redshift Managed Storage (RMS), come tabelle, viste e viste materializzate dai data warehouse Amazon Redshift esistenti, a Glue Data Catalog. AWS Puoi interrogare questi oggetti utilizzando EMR on e Serverless. EC2 EMR

  • Crea RMS cataloghi, AWS Glue Data Catalog e archivia i dati RMS utilizzando Zero ETL e interroga i dati con motori di query compatibili con Iceberg.

  • Crea tabelle Iceberg gestite in AWS Glue Data Catalog con una gestione dello storage completa che include compattazione, istantanee e conservazione.

Connessione a multicatalogo quando inizializzi una sessione Spark

Gli esempi seguenti mostrano come utilizzare la shell interattiva Spark, Spark submit o Amazon EMR Notebooks per lavorare con AWS la gerarchia multicatalogo di Glue.

spark-shell
  1. Connect al nodo master utilizzandoSSH. Per ulteriori informazioni, consulta Connect to master node using SSH nell'Amazon EMR Management Guide.

  2. Immettere il seguente comando per avviare la shell Spark. Per usare la PySpark shell, sostituiscila spark-shell conpyspark.

    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. Connect al nodo master utilizzandoSSH. Per ulteriori informazioni, consulta Connect to master node using SSH nell'Amazon EMR Management Guide.

  2. Inserisci il seguente comando per avviare la sessione Spark per 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

Per inizializzare una sessione Spark utilizzando i notebook EMR Studio, configura la sessione Spark utilizzando il %%configure comando magico nel tuo EMR notebook Amazon, come nell'esempio seguente. Per ulteriori informazioni, consulta EMRUse Notebooks magics nella Amazon Management Guide. 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

Per inizializzare una sessione Spark utilizzando il, esegui il CLI seguente esempio. Per ulteriori informazioni su come specificare una classificazione di configurazione utilizzando AWS CLI e Amazon EMRAPI, consulta Configurare le applicazioni.

[ { "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" } } ]

Inizializza una sessione Spark su Redshift Managed Storage con Glue Data Catalog AWS

Il seguente comando di esempio inizializza una sessione Spark con 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

L'esempio seguente inizializza una sessione Spark utilizzando Iceberg REST API e Redshift Managed Storage AWS with Glue Data Catalog.

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

Per maggiori informazioni sull'utilizzo di una gerarchia multicatalogo AWS Glue con Spark Iceberg, consulta Usare un cluster Iceberg con Spark.

Considerazioni e limitazioni per una configurazione multicatalogo

  • L'utilizzo di una gerarchia multicatalogo con Apache Hive metastore non è supportato.

  • L'utilizzo di una gerarchia multicatalogo con Apache Iceberg non può supportare il fallback su Apache Hive metastore, quando si utilizza. SparkSessionCatalog

  • EMRsui EC2 cluster con ruolo Runtime non supportano la gerarchia multicatalogo.

  • EMRsui EC2 cluster abilitati con AWS Lake Formation non supportano la gerarchia multicatalogo.