Utilisation des configurations Hive lorsque vous exécutez des tâches EMR sans serveur - 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 des configurations Hive lorsque vous exécutez des tâches EMR sans serveur

Vous pouvez exécuter des tâches Hive sur une application dont le type paramètre est défini sur. HIVE Les tâches doivent être compatibles avec la version de Hive compatible avec la version de EMR lancement d'Amazon. Par exemple, lorsque vous exécutez des tâches sur une application avec Amazon EMR version 6.6.0, votre tâche doit être compatible avec Apache Hive 3.1.2. Pour plus d'informations sur les versions de l'application pour chaque version, consultezVersions publiées d'Amazon EMR Serverless.

Paramètres du job Hive

Lorsque vous utilisez le StartJobRunAPIpour exécuter une tâche Hive, vous devez spécifier les paramètres suivants.

Rôle d'exécution du job Hive

Utilisez executionRoleArnpour spécifier le ARN IAM rôle que votre application utilise pour exécuter les tâches Hive. Ce rôle doit contenir les autorisations suivantes :

  • Lisez à partir de compartiments S3 ou d'autres sources de données où résident vos données

  • Lisez à partir de compartiments ou de préfixes S3 où résident votre fichier de requête Hive et votre fichier de requête d'initialisation

  • Lisez et écrivez dans des compartiments S3 où se trouvent votre répertoire Hive Scratch et votre répertoire d'entrepôt Hive Metastore

  • Écrivez dans les compartiments S3 où vous avez l'intention d'écrire votre sortie finale

  • Écrire des journaux dans un compartiment ou un préfixe S3 qui spécifie S3MonitoringConfiguration

  • Accès aux KMS clés si vous utilisez des KMS clés pour chiffrer les données de votre compartiment S3

  • Accès au catalogue de données AWS Glue

Si votre tâche Hive lit ou écrit des données depuis ou vers d'autres sources de données, spécifiez les autorisations appropriées pour ce IAM rôle. Si vous n'accordez pas ces autorisations au IAM rôle, votre tâche risque d'échouer. Pour de plus amples informations, veuillez consulter Rôles d'exécution des tâches pour Amazon EMR Serverless.

Paramètre du pilote de tâche Hive

jobDriverÀ utiliser pour fournir des informations sur la tâche. Le paramètre du pilote de tâche n'accepte qu'une seule valeur pour le type de tâche que vous souhaitez exécuter. Lorsque vous spécifiez hive le type de tâche, EMR Serverless transmet une requête Hive au jobDriver paramètre. Les jobs Hive possèdent les paramètres suivants :

  • query— Il s'agit de la référence dans Amazon S3 au fichier de requête Hive que vous souhaitez exécuter.

  • parameters— Il s'agit des propriétés de configuration supplémentaires de Hive que vous souhaitez remplacer. Pour remplacer les propriétés, transmettez-les à ce paramètre en tant que--hiveconf property=value. Pour remplacer des variables, transmettez-les à ce paramètre sous --hivevar key=value la forme.

  • initQueryFile— Il s'agit du fichier de requête init Hive. Hive exécute ce fichier avant votre requête et peut l'utiliser pour initialiser des tables.

Paramètre de remplacement de la configuration Hive

configurationOverridesÀ utiliser pour remplacer les propriétés de configuration au niveau de la surveillance et au niveau de l'application. Ce paramètre accepte un JSON objet contenant les deux champs suivants :

  • monitoringConfiguration— Utilisez ce champ pour spécifier l'Amazon S3 URL (s3MonitoringConfiguration) où vous souhaitez que la tâche EMR sans serveur stocke les journaux de votre tâche Hive. Assurez-vous de créer ce compartiment dans le même compartiment Compte AWS que celui qui héberge votre application et dans celui Région AWS où votre tâche est exécutée.

  • applicationConfiguration— Vous pouvez fournir un objet de configuration dans ce champ pour remplacer les configurations par défaut des applications. Vous pouvez utiliser une syntaxe abrégée pour fournir la configuration ou vous pouvez faire référence à l'objet de configuration dans un JSON fichier. Les objets de configuration sont composés d'une classification, de propriétés et de configurations imbriquées en option. Les propriétés sont les paramètres que vous souhaitez remplacer dans ce fichier. Vous pouvez définir plusieurs classifications pour plusieurs applications dans un seul JSON objet.

    Note

    Les classifications de configuration disponibles varient en fonction de la version EMR Serverless spécifique. Par exemple, les classifications pour Log4j personnalisées ne spark-executor-log4j2 sont disponibles qu'avec les versions 6.8.0 spark-driver-log4j2 et supérieures.

Si vous transmettez la même configuration dans une dérogation d'application et dans les paramètres Hive, les paramètres Hive sont prioritaires. La liste suivante classe les configurations de la priorité la plus élevée à la plus faible.

  • Configuration que vous fournissez dans le cadre des paramètres Hive avec--hiveconf property=value.

  • La configuration que vous fournissez dans le cadre de votre application remplace lorsque vous démarrez une tâche.

  • Configuration que vous fournissez runtimeConfiguration lors de la création d'une application.

  • Configurations optimisées EMR attribuées par Amazon pour la publication.

  • Configurations open source par défaut pour l'application.

Pour plus d'informations sur la déclaration de configurations au niveau de l'application et sur le remplacement de configurations lors de l'exécution d'une tâche, consultezConfiguration d'application par défaut pour EMR Serverless.

Propriétés des tâches Hive

Le tableau suivant répertorie les propriétés obligatoires que vous devez configurer lorsque vous soumettez une tâche Hive.

Paramètre Description
hive.exec.scratchdir Emplacement Amazon S3 où EMR Serverless crée des fichiers temporaires pendant l'exécution de la tâche Hive.
hive.metastore.warehouse.dir Emplacement Amazon S3 des bases de données pour les tables gérées dans Hive.

Le tableau suivant répertorie les propriétés optionnelles de Hive et leurs valeurs par défaut que vous pouvez remplacer lorsque vous soumettez une tâche Hive.

Paramètre Description Valeur par défaut
fs.s3.customAWSCredentialsProvider Le fournisseur AWS d'informations d'identification que vous souhaitez utiliser. com.amazonaws.auth.d efaultAWSCredentials ProviderChain
fs.s3a.aws.credentials.provider Le fournisseur AWS d'informations d'identification que vous souhaitez utiliser avec un système de fichiers S3A. com.amazonaws.auth.d efaultAWSCredentials ProviderChain
hive.auto.convert.join Option qui active la conversion automatique des jointures communes en mapjoins, en fonction de la taille du fichier d'entrée. TRUE
hive.auto.convert.join.noconditionaltask Option qui active l'optimisation lorsque Hive convertit une jointure commune en mapjoin en fonction de la taille du fichier d'entrée. TRUE
hive.auto.convert.join.noconditionaltask.size Une jointure est convertie directement en une jointure mapjoin inférieure à cette taille. La valeur optimale est calculée sur la base de la mémoire des tâches Tez
hive.cbo.enable Option qui active les optimisations basées sur les coûts avec le framework Calcite. TRUE
hive.cli.tez.session.async Possibilité de démarrer une session Tez en arrière-plan pendant que votre requête Hive se compile. Lorsqu'il est défini surfalse, Tez AM démarre après la compilation de votre requête Hive. TRUE
hive.compute.query.using.stats Option qui active Hive pour répondre à certaines requêtes avec des statistiques stockées dans le métastore. Pour les statistiques de base, définissez hive.stats.autogather surTRUE. Pour une collection de requêtes plus avancée, exécutezanalyze table queries. TRUE
hive.default.fileformat Format de fichier par défaut pour les CREATE TABLE instructions. Vous pouvez le remplacer explicitement si vous le spécifiez STORED AS [FORMAT] dans votre CREATE TABLE commande. TEXTFILE
hive.driver.cores Nombre de cœurs à utiliser pour le processus du pilote Hive. 2
hive.driver.disk Taille du disque pour le pilote Hive. 20G
hive.driver.disk.type Type de disque pour le pilote Hive. Standard
hive.tez.disk.type La taille du disque pour les ouvriers. Standard
hive.driver.memory Quantité de mémoire à utiliser par processus de pilote Hive. Le Hive CLI et le Tez Application Master partagent cette mémoire à parts égales avec 20 % de marge de manœuvre. 6 G
hive.emr-serverless.launch.env.[KEY] Option permettant de définir la variable d'KEYenvironnement dans tous les processus spécifiques à Hive, tels que votre pilote Hive, Tez AM et la tâche Tez.
hive.exec.dynamic.partition Options qui activent les partitions dynamiques dansDML/DDL. TRUE
hive.exec.dynamic.partition.mode Option qui indique si vous souhaitez utiliser le mode strict ou le mode non strict. En mode strict, vous devez spécifier au moins une partition statique au cas où vous remplaceriez accidentellement toutes les partitions. En mode non strict, toutes les partitions peuvent être dynamiques. strict
hive.exec.max.dynamic.partitions Le nombre maximum de partitions dynamiques créées par Hive au total. 1 000
hive.exec.max.dynamic.partitions.pernode Nombre maximal de partitions dynamiques créées par Hive dans chaque nœud de mappage et de réduction. 100
hive.exec.orc.split.strategy Attend l'une des valeurs suivantes : BIETL, ouHYBRID. Il ne s'agit pas d'une configuration au niveau de l'utilisateur. BIindique que vous souhaitez consacrer moins de temps à la génération fractionnée plutôt qu'à l'exécution de requêtes. ETLindique que vous souhaitez consacrer plus de temps à la génération fractionnée. HYBRIDspécifie un choix des stratégies ci-dessus sur la base de l'heuristique. HYBRID
hive.exec.reducers.bytes.per.reducer La taille de chaque réducteur. La valeur par défaut est de 256 Mo. Si la taille d'entrée est de 1 G, la tâche utilise 4 réducteurs. 256000000
hive.exec.reducers.max Le nombre maximum de réducteurs. 256
hive.exec.stagingdir Le nom du répertoire qui stocke les fichiers temporaires créés par Hive dans les emplacements des tables et dans l'emplacement du répertoire de travail spécifié dans la hive.exec.scratchdir propriété. .hive-staging
hive.fetch.task.conversion Attend l'une des valeurs suivantes : NONEMINIMAL, ouMORE. Hive peut convertir certaines requêtes en une seule FETCH tâche. Cela permet de minimiser le temps de latence. MORE
hive.groupby.position.alias Option qui oblige Hive à utiliser un alias de position de colonne dans les GROUP BY instructions. FALSE
hive.input.format Format de saisie par défaut. Réglez sur HiveInputFormat si vous rencontrez des problèmes avecCombineHiveInputFormat. org.apache.hadoop.hive.ql.io.CombineHiveInputFormat
hive.log.explain.output Option qui active les explications des sorties étendues pour toute requête de votre journal Hive. FALSE
hive.log.level Le niveau de journalisation de Hive. INFO
hive.mapred.reduce.tasks.speculative.execution Option qui active le lancement spéculatif pour les réducteurs. Compatible uniquement avec Amazon EMR 6.10.x et versions antérieures. TRUE
hive.max-task-containers Le nombre maximum de conteneurs simultanés. La mémoire du mappeur configurée est multipliée par cette valeur pour déterminer la mémoire disponible qui divise l'utilisation du calcul et de la préemption des tâches. 1 000
hive.merge.mapfiles Option qui entraîne la fusion de petits fichiers à la fin d'une tâche cartographique uniquement. TRUE
hive.merge.size.per.task Taille des fichiers fusionnés à la fin de la tâche. 256000000
hive.merge.tezfiles Option qui active la fusion de petits fichiers à la fin d'un TezDAG. FALSE
hive.metastore.client.factory.class Nom de la classe d'usine qui produit les objets implémentant l'IMetaStoreClientinterface. com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory
hive.metastore.glue.catalogid Si le catalogue de données AWS Glue agit comme un métastore mais s'exécute sous une autre forme Compte AWS que les tâches, l'ID de l' Compte AWS endroit où les tâches sont exécutées. NULL
hive.metastore.uris L'épargne URI que le client de métastore utilise pour se connecter à une métastore distante. NULL
hive.optimize.ppd Option qui active le transfert des prédicats vers le bas. TRUE
hive.optimize.ppd.storage Option qui active le transfert des prédicats vers les gestionnaires de stockage. TRUE
hive.orderby.position.alias Option qui oblige Hive à utiliser un alias de position de colonne dans les ORDER BY instructions. TRUE
hive.prewarm.enabled Option qui active le préchauffage du récipient pour Tez. FALSE
hive.prewarm.numcontainers Le nombre de récipients à préchauffer pour Tez. 10
hive.stats.autogather Option permettant à Hive de collecter automatiquement des statistiques de base lors de la INSERT OVERWRITE commande. TRUE
hive.stats.fetch.column.stats Option qui désactive l'extraction des statistiques des colonnes depuis le métastore. L'extraction des statistiques des colonnes peut s'avérer coûteuse lorsque le nombre de colonnes est élevé. FALSE
hive.stats.gather.num.threads Nombre de threads utilisés par les commandes partialscan et noscan analyze pour les tables partitionnées. Cela ne s'applique qu'aux formats de fichiers qui implémentent StatsProvidingRecordReader (likeORC). 10
hive.strict.checks.cartesian.product Options qui activent des contrôles de jointure cartésiens stricts. Ces contrôles interdisent un produit cartésien (une jointure croisée). FALSE
hive.strict.checks.type.safety Option qui active des contrôles de sécurité de type stricts et désactive la comparaison entre bigint les deux string etdouble. TRUE
hive.support.quoted.identifiers Attend une valeur de NONE ouCOLUMN. NONEimplique que seuls les caractères alphanumériques et les traits de soulignement sont valides dans les identifiants. COLUMNimplique que les noms de colonnes peuvent contenir n'importe quel caractère. COLUMN
hive.tez.auto.reducer.parallelism Option qui active la fonction de parallélisme du réducteur automatique Tez. Hive estime toujours la taille des données et définit des estimations de parallélisme. Tez échantillonne les tailles de sortie des sommets sources et ajuste les estimations au moment de l'exécution si nécessaire. TRUE
hive.tez.container.size La quantité de mémoire à utiliser par processus de tâche Tez. 6144
hive.tez.cpu.vcores Le nombre de cœurs à utiliser pour chaque tâche Tez. 2
hive.tez.disk.size Taille du disque pour chaque conteneur de tâches. 20G
hive.tez.input.format Le format d'entrée pour la génération de splits dans le Tez AM. org.apache.hadoop.hive.ql.io.HiveInputFormat
hive.tez.min.partition.factor Limite inférieure de réducteurs spécifiée par Tez lorsque vous activez le parallélisme des réducteurs automatiques. 0.25
hive.vectorized.execution.enabled Option qui active le mode vectorisé d'exécution des requêtes. TRUE
hive.vectorized.execution.reduce.enabled Option qui active le mode vectorisé du côté réduction de l'exécution d'une requête. TRUE
javax.jdo.option.ConnectionDriverName Nom de classe de pilote pour un JDBC metastore. org.apache.derby.jdbc.EmbeddedDriver
javax.jdo.option.ConnectionPassword Le mot de passe associé à une base de données de métastore. NULL
javax.jdo.option.ConnectionURL Chaîne de JDBC connexion pour un JDBC metastore. jdbc:derby:;databaseName=metastore_db;create=true
javax.jdo.option.ConnectionUserName Nom d'utilisateur associé à une base de données Metastore. NULL
mapreduce.input.fileinputformat.split.maxsize La taille maximale d'une division lors du calcul de la division lorsque votre format d'entrée estorg.apache.hadoop.hive.ql.io.CombineHiveInputFormat. La valeur 0 indique l'absence de limite. 0
tez.am.dag.cleanup.on.completion Option qui active le nettoyage des données de shuffle une fois terminé. DAG TRUE
tez.am.emr-serverless.launch.env.[KEY] Option permettant de définir la variable d'KEYenvironnement dans le processus Tez AM. Pour Tez AM, cette valeur remplace la hive.emr-serverless.launch.env.[KEY] valeur.
tez.am.log.level Le niveau de journalisation root que EMR Serverless transmet au maître de l'application Tez. INFO
tez.am.sleep.time.before.exit.millis EMRServerless devrait envoyer ATS les événements après cette période après la demande d'arrêt AM. 0
tez.am.speculation.enabled Option qui entraîne le lancement spéculatif de tâches plus lentes. Cela peut aider à réduire la latence des tâches lorsque certaines tâches s'exécutent plus lentement en raison de machines défectueuses ou lentes. Compatible uniquement avec Amazon EMR 6.10.x et versions antérieures. FALSE
tez.am.task.max.failed.attempts Nombre maximal de tentatives susceptibles d'échouer pour une tâche donnée avant que celle-ci n'échoue. Ce nombre ne compte pas les tentatives annulées manuellement. 3
tez.am.vertex.cleanup.height Distance à laquelle, si tous les sommets dépendants sont complets, Tez AM supprimera les données de mélange de sommets. Cette fonctionnalité est désactivée lorsque la valeur est 0. EMRLes versions 6.8.0 et ultérieures d'Amazon prennent en charge cette fonctionnalité. 0
tez.client.asynchronous-stop Option qui oblige EMR Serverless à envoyer des ATS événements avant qu'il ne mette fin au pilote Hive. FALSE
tez.grouping.max-size Limite de taille supérieure (en octets) d'un fractionnement groupé. Cette limite permet d'éviter des scissions trop importantes. 1073741824
tez.grouping.min-size Limite de taille inférieure (en octets) d'un fractionnement groupé. Cette limite permet d'éviter un trop grand nombre de petites divisions. 16777216
tez.runtime.io.sort.mb La taille de la mémoire tampon souple lorsque Tez trie la sortie est triée. La valeur optimale est calculée sur la base de la mémoire des tâches Tez
tez.runtime.unordered.output.buffer.size-mb La taille de la mémoire tampon à utiliser si Tez n'écrit pas directement sur le disque. La valeur optimale est calculée sur la base de la mémoire des tâches Tez
tez.shuffle-vertex-manager.max-src-fraction Fraction des tâches source qui doivent être terminées avant que EMR Serverless ne planifie toutes les tâches pour le sommet actuel (dans le cas d'une ScatterGather connexion). Le nombre de tâches prêtes à être planifiées sur le sommet actuel varie linéairement entre etmin-fraction. max-fraction Cela correspond à la valeur par défaut ou tez.shuffle-vertex-manager.min-src-fraction à la valeur la plus élevée. 0.75
tez.shuffle-vertex-manager.min-src-fraction Fraction des tâches source qui doivent être effectuées avant que EMR Serverless ne planifie des tâches pour le sommet actuel (dans le cas d'une ScatterGather connexion). 0.25
tez.task.emr-serverless.launch.env.[KEY] Option permettant de définir la variable d'KEYenvironnement dans le processus de tâche Tez. Pour les tâches Tez, cette valeur remplace la hive.emr-serverless.launch.env.[KEY] valeur.
tez.task.log.level Le niveau de journalisation root que EMR Serverless transmet aux tâches Tez. INFO
tez.yarn.ats.event.flush.timeout.millis Durée maximale pendant laquelle AM doit attendre que les événements soient supprimés avant de s'arrêter. 300 000

Exemples d'emplois chez Hive

L'exemple de code suivant montre comment exécuter une requête Hive avec le StartJobRunAPI.

aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --job-driver '{ "hive": { "query": "s3://amzn-s3-demo-bucket/emr-serverless-hive/query/hive-query.ql", "parameters": "--hiveconf hive.log.explain.output=false" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "hive-site", "properties": { "hive.exec.scratchdir": "s3://amzn-s3-demo-bucket/emr-serverless-hive/hive/scratch", "hive.metastore.warehouse.dir": "s3://amzn-s3-demo-bucket/emr-serverless-hive/hive/warehouse", "hive.driver.cores": "2", "hive.driver.memory": "4g", "hive.tez.container.size": "4096", "hive.tez.cpu.vcores": "1" } }] }'

Vous trouverez d'autres exemples d'exécution de tâches Hive dans le référentiel EMRServerless Samples GitHub .