View a markdown version of this page

Utilisation de Presto avec AWS Catalogue de données Glue - Amazon EMR

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation de Presto avec AWS Catalogue de données Glue

À l'aide de la version 5.10.0 et des versions ultérieures d'Amazon EMR, vous pouvez spécifier le catalogue de données AWS Glue comme métastore Hive par défaut pour Presto. Cette configuration est recommandée si vous avez besoin d'un metastore persistant ou d'un metastore partagé par différents clusters, services, applications ou Comptes AWS.

AWS Glue est un service d'extraction, de transformation et de chargement (ETL) entièrement géré qui permet de classer vos données de manière simple et rentable, de les nettoyer, de les enrichir et de les déplacer de manière fiable entre différents magasins de données. Le catalogue de données AWS Glue fournit un référentiel de métadonnées unifié pour une variété de sources de données et de formats de données, s'intégrant à Amazon EMR ainsi qu'à Amazon RDS, Amazon Redshift, Redshift Spectrum, Athena et à toute application compatible avec le métastore Apache Hive. AWS Les robots Glue peuvent déduire automatiquement un schéma à partir des données sources dans Amazon S3 et stocker les métadonnées associées dans le catalogue de données. Pour plus d'informations sur le catalogue de données, voir Remplir le catalogue de données AWS Glue dans le Guide du développeur AWS Glue.

Des frais distincts s'appliquent pour AWS Glue. Il existe un tarif mensuel pour le stockage et l'accès aux métadonnées dans le catalogue de données, un tarif horaire facturé par minute pour les tâches AWS Glue ETL et l'exécution du robot d'exploration, et un tarif horaire facturé par minute pour chaque point de terminaison de développement provisionné. Le catalogue de données vous permet de stocker jusqu'à un million d'objets sans aucuns frais. Au-delà d'un million d'objets, des frais de 1 USD vous seront facturés tous les 100 000 objets. Dans le catalogue de données, sont considérés comme des objets une table, une partition ou une base de données. Pour de plus amples informations, consultez Tarification Glue.

Important

Si vous avez créé des tableaux à l'aide d'Amazon Athena ou d'Amazon Redshift Spectrum avant le 14 août 2017, les bases de données et les tables sont stockées dans un Athena-managed catalogue distinct du catalogue de données AWS Glue. Pour intégrer Amazon EMR à ces tables, vous devez passer au catalogue de données AWS Glue. Pour plus d'informations, consultez la section Mise à niveau vers le catalogue de données AWS Glue dans le guide de l'utilisateur d'Amazon Athena.

Spécifier AWS Glue Data Catalog en tant que métastore

Vous pouvez spécifier le catalogue de données AWS Glue comme métastore à l'aide de l'API Console de gestion AWS AWS CLI, ou Amazon EMR. Lorsque vous utilisez la CLI ou l'API, vous utilisez la classification de configuration de Presto pour spécifier le catalogue de données. En outre, avec Amazon EMR 5.16.0 et versions ultérieures, vous pouvez utiliser la classification de configuration pour spécifier un catalogue de données dans un autre. Compte AWS Lorsque vous utilisez la console, vous pouvez spécifier le catalogue de données à l'aide des Options avancées ou des Options rapides.

Console
Pour spécifier AWS Glue Data Catalog en tant que métastore Hive avec la nouvelle console
  1. Connectez-vous au et ouvrez Console de gestion AWS la console Amazon EMR à https://console.aws.amazon.com/emr l'adresse.

  2. Sous EMR sur EC2 dans le volet de navigation de gauche, choisissez Clusters, puis Créer un cluster.

  3. Sous Solution groupée d'application, choisissez Presto.

  4. Sous Paramètres du catalogue de données AWS Glue, cochez la case Utiliser pour les métadonnées des tables Presto.

  5. Choisissez toutes les autres options qui s'appliquent à votre cluster.

  6. Pour lancer cluster, choisissez Créer un cluster.

CLI
Pour spécifier AWS Glue Data Catalog comme métastore Hive par défaut à l'aide du AWS CLI

Pour des exemples de spécification des classifications de configuration suivantes lorsque vous créez un cluster, consultez Configuration des applications.

Amazon EMR 5.16.0 et versions ultérieures

  • Définissez la propriété hive.metastore sur glue, comme indiqué dans l'exemple JSON suivant.

    [ { "Classification": "presto-connector-hive", "Properties": { "hive.metastore": "glue" } } ]

    Pour spécifier un catalogue de données dans un autre catalogue Compte AWS, ajoutez la hive.metastore.glue.catalogid propriété comme indiqué dans l'exemple JSON suivant. Remplacez acct-id par le compte AWS du catalogue de données. L'utilisation d'un catalogue de données dans un autre Compte AWS n'est pas disponible avec Amazon EMR version 5.15.0 et antérieures.

    [ { "Classification": "presto-connector-hive", "Properties": { "hive.metastore": "glue", "hive.metastore.glue.catalogid": "acct-id" } } ]

    Amazon EMR versions 5.10.0 à 5.15.0

    Définissez la propriété hive.metastore.glue.datacatalog.enabled sur true, comme indiqué dans l'exemple JSON suivant :

    [ { "Classification": "presto-connector-hive", "Properties": { "hive.metastore.glue.datacatalog.enabled": "true" } } ]

    Amazon EMR 6.1.0 et versions ultérieures utilisant PrestoSQL (Trino)

    À partir de la version 6.1.0 d'EMR, PrestoSQL prend également en charge Glue comme métastore Hive par défaut. Utilisez la classification de configuration prestosql-connector-hive et définissez la propriété hive.metastore sur glue, comme indiqué dans l'exemple JSON suivant.

    Les versions 6.4.0 et ultérieures d'Amazon EMR utilisent le nouveau nom Trino au lieu de PrestoSQL. Si vous utilisez Trino, remplacez prestosql-connector-hive dans la classification de configuration suivante par trino-connector-hive.

    [ { "Classification": "prestosql-connector-hive", "Properties": { "hive.metastore": "glue" } } ]

Pour basculer les metastores sur un cluster de longue durée, vous pouvez définir manuellement ces valeurs selon les besoins de votre version en vous connectant au nœud maître, en modifiant les valeurs de propriété directement dans le fichier /etc/presto/conf/catalog/hive.properties et en redémarrant le serveur Presto (sudo restart presto-server). Si vous utilisez cette méthode sur les versions 5.15.0 et antérieures d'Amazon EMR, assurez-vous que hive.table-statistics-enabled soit défini sur false. Ce paramètre n'est pas obligatoire lorsque vous utilisez les versions 5.16.0 et ultérieures ; cependant, les statistiques de table et de partition ne sont pas prises en charge.

Autorisations IAM

Le profil d'instance EC2 d'un cluster doit disposer d'autorisations IAM pour les actions AWS Glue. En outre, si vous activez le chiffrement pour les objets du catalogue de données AWS Glue, le rôle doit également être autorisé à chiffrer, déchiffrer et générer les éléments AWS KMS key utilisés pour le chiffrement.

Autorisations pour AWS Actions de colle

Aucune action n'est requise si vous utilisez le profil d'instance EC2 par défaut pour Amazon EMR. La politique AmazonElasticMapReduceforEC2Role gérée qui est associée à EMR_EC2_DefaultRole autorise toutes les actions AWS Glue nécessaires. Toutefois, si vous spécifiez un profil d'instance EC2 personnalisé et des autorisations, vous devez configurer les actions AWS Glue appropriées. Utilisez la stratégie gérée AmazonElasticMapReduceforEC2Role comme point de départ. Pour plus d'informations, consultez Rôle de service pour les instances EC2 de cluster (profil d'instance EC2) dans le Guide de gestion Amazon EMR.

Autorisations pour le chiffrement et le déchiffrement AWS Catalogue de données Glue

Votre profil d'instance a besoin d'autorisations pour chiffrer et déchiffrer les données au moyen de votre clé. Vous n'avez pas besoin de configurer ces autorisations si les deux déclarations suivantes s'appliquent :

  • Vous activez le chiffrement des objets du catalogue de données AWS Glue à l'aide de clés gérées pour AWS Glue.

  • Vous utilisez un cluster identique à celui du catalogue Compte AWS de données AWS Glue.

Sinon, vous devez ajouter l'instruction suivante à la politique d'autorisations attachée à votre profil d'instance EC2.

Pour plus d'informations sur le chiffrement du catalogue de données AWS Glue, consultez la section Chiffrement de votre catalogue de données dans le guide du développeur AWS Glue.

Resource-based autorisations

Si vous utilisez AWS Glue conjointement avec Hive, Spark ou Presto dans Amazon EMR, AWS Glue prend en charge des politiques basées sur les ressources pour contrôler l'accès aux ressources du catalogue de données. Ces ressources comprennent les bases de données, les tables, les connexions et les fonctions définies par l'utilisateur. Pour plus d'informations, consultez Politiques de ressources AWS Glue dans le Guide du développeur AWS Glue.

Lorsque vous utilisez des politiques basées sur les ressources pour limiter l'accès à AWS Glue depuis Amazon EMR, le principal que vous spécifiez dans la politique d'autorisations doit être le rôle ARN associé au profil d'instance EC2 spécifié lors de la création d'un cluster. Par exemple, pour une politique basée sur les ressources attachée à un catalogue, vous pouvez spécifier le rôle ARN pour le rôle de service par défaut pour les instances EC2 du cluster, EMR_EC2_DefaultRole en utilisant le Principal format illustré dans l'exemple suivant :

arn:aws:iam::acct-id:role/EMR_EC2_DefaultRole

Il acct-id peut être différent de l'identifiant de compte AWS Glue. Cela permet d'accéder aux clusters EMR à partir de comptes différents. Vous pouvez spécifier plusieurs principaux, chacun provenant d'un compte différent.

Considérations relatives à l'utilisation AWS Catalogue de données Glue

Tenez compte des éléments suivants lorsque vous utilisez AWS Glue Data Catalog comme métastore avec Presto :

  • Il n'est pas possible de renommer des tables depuis AWS Glue.

  • Lorsque vous créez une table Hive sans spécifier de LOCATION, les données de la table sont stockées à l'emplacement spécifié par la propriété hive.metastore.warehouse.dir. Par défaut, il s'agit d'un emplacement dans HDFS. Si un autre cluster doit accéder à la table, il échoue, sauf s'il dispose d'autorisations adéquates sur le cluster qui a créé la table. En outre, le stockage dans HDFS étant transitoire, si le cluster est résilié, les données de la table sont perdues et la table doit être recréée. Nous vous recommandons de spécifier un LOCATION dans Amazon S3 lorsque vous créez une table Hive à l'aide de AWS Glue. Vous pouvez également utiliser la classification de configuration hive-site pour spécifier un emplacement dans Amazon S3 pour hive.metastore.warehouse.dir, qui s'applique à toutes les tables Hive. Si une table est créée dans un emplacement HDFS et que le cluster qui l'a créée est toujours en cours d'exécution, vous pouvez mettre à jour l'emplacement de la table vers Amazon S3 depuis AWS Glue. Pour plus d'informations, consultez la section Utilisation de tableaux sur la console AWS Glue dans le Guide du développeur AWS Glue.

  • Les valeurs de partition contenant des guillemets et des apostrophes ne sont pas prises en charge, par exemple PARTITION (owner="Doe's")..

  • Les statistiques sur les colonnes sont prises en charge à partir de la version emr-5.31.0.

  • L'utilisation de l'autorisation Hive n'est pas prise en charge. Comme alternative, pensez à utiliser AWS Glue Resource-Based Policies. Pour plus d'informations, consultez la section Resource-Based Politiques d'utilisation relatives à l'accès d'Amazon EMR au catalogue de données AWS Glue.