View a markdown version of this page

Lavorare con una gerarchia multi-catalogo in AWS Incolla Data Catalog con 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à.

Lavorare con una gerarchia multi-catalogo in AWS Incolla Data Catalog con Spark su Amazon EMR

Puoi registrare il tuo cluster Amazon EMR 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 multi-catalogo, che unifica i dati nei data lake di Amazon S3. Fornisce inoltre un'API Hive metastore e un'API REST Apache Iceberg open source per l'accesso ai dati. Queste funzionalità sono disponibili per Amazon EMR e altri servizi come Amazon Redshift. Amazon Athena

Come sono organizzate le risorse del catalogo

Quando crei risorse nel AWS Glue Data Catalog, puoi accedervi da qualsiasi motore SQL che supporti l'API REST di Apache Iceberg o il metastore 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 da un archivio dati, come schemi o tabelle.

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

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

  • Tabelle e viste: oggetti 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 gli strumenti Amazon EMR. Il AWS Glue Data Catalog offre compatibilità con i metastore Hive e API compatibili con Iceberg REST.

Configurazione di Amazon EMR con un metastore Hive

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

Autorizzazioni per accedere alle risorse in AWS Catalogo dati Glue

Questa sezione descrive i requisiti delle policy IAM per l'utilizzo degli strumenti Amazon EMR con i dati del catalogo. Dopo aver registrato il cluster con 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 ruolo IAM 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, vedere Concessione e revoca delle autorizzazioni sulle risorse di Data Catalog.

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 di più cataloghi in AWS Catalogo dati Glue

Con EMR 7.5, puoi configurare Spark per utilizzare AWS la gerarchia multi-catalogo di Glue. Una gerarchia multi-catalogo consente di:

  • Trasferisci i tuoi dati 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 su EC2 ed EMR Serverless.

  • Crea cataloghi RMS, AWS incolla Data Catalog e archivia i dati in RMS utilizzando ZeroETL e interroga i dati con i motori di interrogazione. Iceberg-compatible

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

Connessione a più cataloghi quando inizializzi una sessione Spark

Gli esempi seguenti dimostrano come utilizzare la shell interattiva Spark, Spark submit o Amazon EMR Notebooks per lavorare con la gerarchia multi-catalogo di Glue. AWS

spark-shell
  1. Connessione al nodo master tramite SSH Per ulteriori informazioni, consulta Connessione al nodo master tramite SSH nella Guida alla gestione di Amazon EMR.

  2. Immettere il seguente comando per avviare la shell Spark. Per usare la shell, sostituisci con. PySpark spark-shell 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. Connessione al nodo master tramite SSH Per ulteriori informazioni, consulta Connessione al nodo master tramite SSH nella Guida alla gestione di Amazon EMR.

  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, configurare la sessione Spark utilizzando il comando magico %%configure sul tuo notebook Amazon EMR, come nell'esempio seguente. Per ulteriori informazioni, consulta Utilizzo di EMR Notebooks magics nella Guida alla gestione di 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

Per inizializzare una sessione Spark utilizzando la CLI, esegui il seguente esempio. Per ulteriori informazioni su come specificare una classificazione di configurazione utilizzando l' AWS CLI API Amazon EMR, consulta Configure applications. https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html

[ { "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 AWS Catalogo dati Glue

Il seguente comando di esempio inizializza una sessione Spark con il Glue Data Catalog. AWS

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 l'API REST di Iceberg e lo storage gestito Redshift con 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

Per ulteriori informazioni sull'utilizzo di una gerarchia multi-catalogo AWS Glue con Spark Iceberg, consulta Use an Iceberg cluster with Spark. https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-iceberg-use-spark-cluster.html

Considerazioni e limitazioni per una configurazione con più cataloghi

  • L'uso di una gerarchia multi-catalogo con il metastore Apache Hive non è supportato.

  • L'utilizzo di una gerarchia a più cataloghi con Apache Iceberg non può supportare il fallback al metastore di Apache Hive, quando si utilizza. SparkSessionCatalog

  • L'EMR su cluster EC2 con ruolo Runtime non supporta la gerarchia multi-catalogo.

  • EMR su cluster EC2 abilitati con non supporta la gerarchia multi-catalogo. AWS Lake Formation