Compartir tecnología

tabla de particiones de colmena

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1.Tabla de particiones:

Es un tipo de tabla en Hive. Al dividir los datos de la tabla en múltiples subconjuntos (particiones), cada partición corresponde a un valor de columna específico en la tabla, se puede mejorar el rendimiento de las consultas y la eficiencia de la administración de datos. Cada partición de una tabla particionada se almacena en un directorio separado y la partición se define en función de una o más columnas de la tabla. El objetivo principal del uso de tablas particionadas es reducir la cantidad de datos escaneados por las consultas, mejorando así la eficiencia de las consultas.

La partición excesiva puede resultar en la generación de una gran cantidad de archivos pequeños, lo que afecta el rendimiento de HDFS y la eficiencia de las tareas de MapReduce. Las operaciones de fusión de archivos pequeños deben realizarse con regularidad.

  1. CREATE TABLE customer_data (
  2. customer_id STRING,
  3. name STRING,
  4. age INT,
  5. email STRING
  6. )
  7. PARTITIONED BY (city STRING)
  8. STORED AS ORC;
  9. select *
  10. from customer_data;
  11. -- 插入 New York 的数据
  12. INSERT INTO TABLE customer_data PARTITION (city='New York')
  13. VALUES
  14. ('1', 'John Doe', 30, '[email protected]'),
  15. ('2', 'Jane Smith', 25, '[email protected]'),
  16. ('3', 'Bob Johnson', 40, '[email protected]');
  17. -- 插入 Los Angeles 的数据
  18. INSERT INTO TABLE customer_data PARTITION (city='Los Angeles')
  19. VALUES
  20. ('4', 'Alice Brown', 32, '[email protected]'),
  21. ('5', 'Charlie Davis', 28, '[email protected]');
  22. -- 插入 Chicago 的数据
  23. INSERT INTO TABLE customer_data PARTITION (city='Chicago')
  24. VALUES
  25. ('6', 'Eve White', 45, '[email protected]'),
  26. ('7', 'Frank Black', 37, '[email protected]');

Puede ver que se han creado tres directorios en HDFS, correspondientes a tres particiones. El uso de seleccionar con condiciones donde para consultar encontrará directamente datos de los directorios de partición correspondientes, lo que reducirá la cantidad de datos escaneados por la consulta y mejorará el rendimiento.

SELECT * FROM customer_data WHERE city='New York';

2. Mesa de cubos:

Es otro tipo de tabla en Hive. Al agrupar mediante hash los datos de la tabla, se puede mejorar aún más el rendimiento de las consultas, especialmente cuando se realizan operaciones de unión y agregación. Las tablas de agrupación dividen los datos en un número fijo de depósitos y cada depósito se almacena en un archivo independiente.
-------------------------------------------------- -Características de la mesa de cubos--------------------------------------------- - -------
Partición de datos: distribuya los datos en una cantidad fija de depósitos según el valor hash de una o más columnas.
Almacenamiento de archivos: los datos de cada depósito se almacenan en un archivo separado.
Distribución uniforme: lo ideal es que los datos se distribuyan uniformemente en todos los depósitos, lo que mejora el rendimiento de las consultas.

  1. CREATE TABLE customer_data2 (
  2. customer_id STRING,
  3. name STRING,
  4. age INT,
  5. email STRING
  6. )
  7. CLUSTERED BY (customer_id) INTO 4 BUCKETS
  8. STORED AS ORC;
  9. -- 插入数据到分桶表
  10. --通过这些步骤,我们创建了一个按 customer_id 列进行分桶的 Hive 表 customer_data,并插入了具体的数据。
  11. INSERT INTO TABLE customer_data2 VALUES
  12. ('1', 'John Doe', 30, '[email protected]'),
  13. ('2', 'Jane Smith', 25, '[email protected]'),
  14. ('3', 'Bob Johnson', 40, '[email protected]'),
  15. ('4', 'Alice Brown', 32, '[email protected]'),
  16. ('5', 'Charlie Davis', 28, '[email protected]'),
  17. ('6', 'Eve White', 45, '[email protected]'),
  18. ('7', 'Frank Black', 37, '[email protected]'),
  19. ('8', 'Grace Green', 22, '[email protected]');
  20. select *
  21. from customer_data2;

Al observar la ruta en HDFS, podemos ver que los datos se dividirán en diferentes depósitos según el valor hash de la columna correspondiente.