minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
É um tipo de tabela no Hive. Ao dividir os dados da tabela em vários subconjuntos (partições), cada partição corresponde a um valor de coluna específico na tabela, o desempenho da consulta e a eficiência do gerenciamento de dados podem ser melhorados. Cada partição de uma tabela particionada é armazenada em um diretório separado e a partição é definida com base em uma ou mais colunas da tabela. O principal objetivo do uso de tabelas particionadas é reduzir a quantidade de dados verificados pelas consultas, melhorando assim a eficiência das consultas.
O particionamento excessivo pode resultar na geração de um grande número de arquivos pequenos, afetando o desempenho do HDFS e a eficiência das tarefas do MapReduce. Pequenas operações de mesclagem de arquivos precisam ser executadas regularmente.
- 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
Você pode ver que três diretórios foram criados no HDFS, correspondendo a três partições. Usar select com condições where para consultar encontrará dados diretamente dos diretórios de partição correspondentes, reduzindo assim a quantidade de dados verificados pela consulta e melhorando o desempenho.
SELECT * FROM customer_data WHERE city='New York';
É outro tipo de tabela no Hive. Ao agrupar os dados na tabela com hash, o desempenho da consulta pode ser melhorado ainda mais, especialmente ao executar operações de junção e agregação. As tabelas de buckets dividem os dados em um número fixo de buckets, e cada bucket é armazenado em um arquivo separado.
-------------------------------------------------- -Características da mesa de balde --------------------------------------------- - -------
Particionamento de dados: Distribua os dados em um número fixo de buckets com base no valor hash de uma ou mais colunas.
Armazenamento de arquivos: os dados de cada bucket são armazenados em um arquivo separado.
Distribuição uniforme: idealmente, os dados são distribuídos uniformemente em todos os buckets, melhorando assim o desempenho da consulta.
- 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;
Observando o caminho no HDFS, podemos ver que os dados serão divididos em diferentes buckets de acordo com o valor hash da coluna correspondente.