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 grands ensembles de données résidant dans le stockage distribué à l'aide de SQL.
Propriétés de configuration Hive
Propriétés de configuration Hive incluses dans Big Data Service 3.1.1 ou version ultérieure.
Configuration | Propriété | Description |
---|---|---|
hive-env |
hive_metastore_hadoop_opts |
Options Hadoop pour le metastore Hive |
hive_metastore_remotejmx_hadoop_opts |
Options Hadoop pour le metastore Hive si JXM distant est activé | |
hive_server_hadoop_opts |
Options Hadoop pour le serveur Hive | |
hive_server_remotejmx_hadoop_opts |
Options Hadoop pour le 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 des performances
Il s'agit d'une consigne générale lors de l'exécution de requêtes sur des ensembles de données plus petits. La fonctionnalité FetchTask offre les avantages suivants dans les scénarios/cas mentionnés.
Lorsque vous utilisez des ensembles de données plus petits, vous bénéficiez de la fonctionnalité FetchTask dans des scénarios ou des cas d'utilisation spécifiques lors de l'exécution de requêtes. La fonctionnalité peut être contrôlée à l'aide du paramètre "hive.fetch.task.conversion
", qui est défini sur "more
" par défaut. FetchTask est une tâche efficace qui accède directement au fichier pour fournir des résultats, sans démarrer de travail MapReduce pour la requête entrante. La fonctionnalité 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 source de données unique (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 de requêtes 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'"
et FetchTask est exploitée. Toutefois, si vous définissez "hive.fetch.task.conversion
" sur minimal, FetchTask sera appliqué lors de l'exécution de "select *
" avec une limite.
Lors du traitement d'ensembles de données plus volumineux et de l'activation de FetchTask, réglez la taille de la portion de mémoire serveur et client en fonction de la taille de l'ensemble de données lors du lancement de requêtes de sélection à partir des outils BI, Beeline, Hue, etc. Pour éliminer les goulets d'étranglement de mémoire de HiveServer, vous pouvez également définir "hive.fetch.task.conversion
" sur Aucun pour désactiver la fonctionnalité FetchTask et exécuter les travaux MapReduce.
Echec de la requête de suppression de table Hive
La requête de suppression de table 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 des suppressions 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');