le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
È un tipo di tabella in Hive. Dividendo i dati nella tabella in più sottoinsiemi (partizioni), ciascuna partizione corrisponde a un valore di colonna specifico nella tabella, è possibile migliorare le prestazioni delle query e l'efficienza della gestione dei dati. Ogni partizione di una tabella partizionata viene archiviata in una directory separata e la partizione viene definita in base a una o più colonne nella tabella. Lo scopo principale dell'utilizzo delle tabelle partizionate è ridurre la quantità di dati analizzati dalle query, migliorando così l'efficienza delle query.
Un partizionamento eccessivo può comportare la generazione di un numero elevato di file di piccole dimensioni, influenzando le prestazioni HDFS e l'efficienza delle attività MapReduce. Le operazioni di fusione di piccoli file devono essere eseguite regolarmente.
- 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
Puoi vedere che sono state create tre directory su HDFS, corrispondenti a tre partizioni. Utilizzando select con le condizioni su cui interrogare verranno trovati direttamente i dati dalle directory della partizione corrispondente, riducendo così la quantità di dati scansionati dalla query e migliorando le prestazioni.
SELECT * FROM customer_data WHERE city='New York';
È un altro tipo di tabella in Hive Eseguendo l'hash bucket dei dati nella tabella, le prestazioni delle query possono essere ulteriormente migliorate, soprattutto durante l'esecuzione di operazioni di unione e aggregazione. Le tabelle di bucket dividono i dati in un numero fisso di bucket e ciascun bucket viene archiviato in un file separato.
-------------------------------------------------- -Caratteristiche della tabella bucket---------------------------------------------------- - -------
Partizionamento dei dati: distribuisci i dati in un numero fisso di bucket in base al valore hash di una o più colonne.
Archiviazione file: i dati di ciascun bucket vengono archiviati in un file separato.
Distribuzione uniforme: idealmente, i dati vengono distribuiti uniformemente su tutti i bucket, migliorando così le prestazioni delle query.
- 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;
Osservando il percorso su HDFS, possiamo vedere che i dati verranno suddivisi in diversi bucket in base al valore hash della colonna corrispondente.