Utilisation d'Apache Hive
Apache Hive est un système d'entrepôt de données construit sur Apache Hadoop et facilite la lecture, l'écriture et la gestion de jeux de données volumineux résidant dans le stockage distribué à l'aide de SQL.
Propriétés de configuration Hive
Propriétés de configuration Hive incluses dans le service de mégadonnées 3.1.1 ou version ultérieure.
Configuration | Propriété | Description |
---|---|---|
hive-env |
hive_metastore_hadoop_opts |
Options Hadoop pour le magasin de métadonnées Hive |
hive_metastore_remotejmx_hadoop_opts |
Options Hadoop pour le magasin de métadonnées Hive si JXM distant est activé | |
hive_server_hadoop_opts |
Options Hadoop pour serveur Hive | |
hive_server_remotejmx_hadoop_opts |
Options Hadoop pour serveur Hive si JXM distant est activé | |
hive_secure_hadoop_opts |
Options Hadoop si la sécurité est activée | |
hive_classpath_ext |
Chemins contenant les bibliothèques Hadoop pour Hive | |
hive-interactive-env |
hive_interactive_hadoop_opts |
Options Hadoop pour Hive Interactive |
hive_interactive_secure_hadoop_opts |
Options Hadoop pour Hive Interactive si la sécurité est activée |
Réglage de la performance
Il s'agit d'une directive générale lorsque vous exécutez des interrogations sur des jeux de données plus petits. La fonction FetchTask offre les avantages suivants dans le scénario/les cas d'utilisation mentionnés.
Lorsque vous utilisez des jeux de données plus petits, vous bénéficiez de la fonction FetchTask dans des scénarios ou des cas d'utilisation spécifiques lors de l'exécution d'interrogations. La fonction peut être contrôlée à l'aide du paramètre "hive.fetch.task.conversion
", qui est réglé à "more
" par défaut. FetchTask est une tâche efficace qui accède directement au fichier pour fournir des résultats, sans démarrer une tâche MapReduce pour l'interrogation entrante. La fonction est appliquée lors de la sélection de colonnes spécifiques avec une limite, sous réserve d'exigences supplémentaires telles qu'une seule source de données (une table ou une partition), aucune sous-interrogation, aucune agrégation ou distincte, et ne s'applique pas aux vues ou aux jointures. Par conséquent, l'exécution d'interrogations telles que "select col1 as alias1, col2 from table where partitionkey='somePartitionValue'", "select id from t limit 1;", or "select col1 as alias1, col2 from table where partitionkey='somePartitionValue'"
, FetchTask est utilisée. Toutefois, si vous réglez "hive.fetch.task.conversion
" à minimal, FetchTask sera appliqué lors de l'exécution de "select *
" avec une limite.
Lors du traitement de jeux de données plus volumineux et de l'activation de FetchTask, réglez la taille du tas du serveur et du client en fonction de la taille du jeu de données lors du déclenchement de requêtes sélectionnées à partir des outils BI, Beeline, Hue, etc. Sinon, pour éliminer les goulots d'étranglement de mémoire de HiveServer, réglez "hive.fetch.task.conversion
" à Aucun pour désactiver la fonction FetchTask et exécuter les tâches MapReduce.
Échec de l'interrogation de la table de suppression Hive
L'interrogation de la table de suppression Hive échoue avec l'erreur DELETE from table1
.
DELETE from table1;
FAILED: SemanticException [Error 10294]: Attempt to do update or delete using transaction manager that does not support these operations.
La prise en charge de la suppression n'est pas disponible pour les tables non transactionnelles ou non acides dans Hive. Pour supprimer une table, vous devez créer une table transactionnelle.
Exemple :
CREATE TABLE emp12(id int,age int)TBLPROPERTIES ('transactional'='true');