2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Il s'agit d'un type de table dans Hive. En divisant les données de la table en plusieurs sous-ensembles (partitions), chaque partition correspond à une valeur de colonne spécifique dans la table, les performances des requêtes et l'efficacité de la gestion des données peuvent être améliorées. Chaque partition d'une table partitionnée est stockée dans un répertoire distinct et la partition est définie en fonction d'une ou plusieurs colonnes de la table. L'objectif principal de l'utilisation de tables partitionnées est de réduire la quantité de données analysées par les requêtes, améliorant ainsi l'efficacité des requêtes.
Un partitionnement excessif peut entraîner la génération d'un grand nombre de petits fichiers, affectant les performances HDFS et l'efficacité des tâches MapReduce. Les opérations de fusion de petits fichiers doivent être effectuées régulièrement.
- CREATE TABLE customer_data (
- customer_id STRING,
- name STRING,
- age INT,
- email STRING
- )
- PARTITIONED BY (city STRING)
- STORED AS ORC;
-
- select *
- from customer_data;
-
- -- 插入 New York 的数据
- INSERT INTO TABLE customer_data PARTITION (city='New York')
- VALUES
-
- -- 插入 Los Angeles 的数据
- INSERT INTO TABLE customer_data PARTITION (city='Los Angeles')
- VALUES
-
- -- 插入 Chicago 的数据
- INSERT INTO TABLE customer_data PARTITION (city='Chicago')
- VALUES
Vous pouvez voir que trois répertoires ont été créés sur HDFS, correspondant à trois partitions. L'utilisation de select avec une condition Where pour interroger trouvera directement les données du répertoire de partition correspondant, réduisant ainsi la quantité de données analysées par la requête et améliorant les performances.
SELECT * FROM customer_data WHERE city='New York';
Il s'agit d'un autre type de table dans Hive. En regroupant les données dans la table, les performances des requêtes peuvent être encore améliorées, en particulier lors des opérations de jointure et d'agrégation. Les tables de compartiments divisent les données en un nombre fixe de compartiments, et chaque compartiment est stocké dans un fichier distinct.
-------------------------------------------------- -Caractéristiques de la table à godets------------------------------------------------------- - -------
Partitionnement des données : distribuez les données dans un nombre fixe de compartiments en fonction de la valeur de hachage d'une ou plusieurs colonnes.
Stockage de fichiers : les données de chaque compartiment sont stockées dans un fichier distinct.
Distribution uniforme : idéalement, les données sont réparties uniformément dans tous les compartiments, améliorant ainsi les performances des requêtes.
- CREATE TABLE customer_data2 (
- customer_id STRING,
- name STRING,
- age INT,
- email STRING
- )
- CLUSTERED BY (customer_id) INTO 4 BUCKETS
- STORED AS ORC;
- -- 插入数据到分桶表
- --通过这些步骤,我们创建了一个按 customer_id 列进行分桶的 Hive 表 customer_data,并插入了具体的数据。
- INSERT INTO TABLE customer_data2 VALUES
-
- select *
- from customer_data2;
En regardant le chemin sur HDFS, on constate que les données seront divisées en différents buckets selon la valeur de hachage de la colonne correspondante.