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 StartJobRun
APIpour exécuter une tâche Hive, vous devez spécifier les paramètres suivants.
Paramètres requis
Rôle d'exécution du job Hive
Utilisez executionRoleArn
pour 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
. Pour remplacer des variables, transmettez-les à ce paramètre sousproperty=value
--hivevar
la forme.key=value
-
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.0spark-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.[ |
Option permettant de définir la variable d' environnement 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 : BI ETL , ouHYBRID . Il ne s'agit pas d'une configuration au niveau de l'utilisateur. BI indique que vous souhaitez consacrer moins de temps à la génération fractionnée plutôt qu'à l'exécution de requêtes. ETL indique que vous souhaitez consacrer plus de temps à la génération fractionnée. HYBRID spé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 : NONE MINIMAL , 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'IMetaStoreClient interface. |
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 . NONE implique que seuls les caractères alphanumériques et les traits de soulignement sont valides dans les identifiants. COLUMN implique 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.[ |
Option permettant de définir la variable d' environnement dans le processus Tez AM. Pour Tez AM, cette valeur remplace la hive.emr-serverless.launch.env.[ 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.[ |
Option permettant de définir la variable d' environnement dans le processus de tâche Tez. Pour les tâches Tez, cette valeur remplace la hive.emr-serverless.launch.env.[ 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 StartJobRun
API.
aws emr-serverless start-job-run \ --application-id
application-id
\ --execution-role-arnjob-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