Mesa de cubo de entrada de colmena

El particionamiento proporciona una forma conveniente de aislar datos y optimizar consultas. Sin embargo, no todos los conjuntos de datos pueden formar particiones razonables. Para una tabla o partición, Hive se puede organizar aún más en cubos, que es una división de rango de datos más detallada.
Bucketing es otra técnica que divide un conjunto de datos en partes más manejables.
El particionamiento es para rutas de almacenamiento de datos; el almacenamiento es para archivos de datos.

Pasos para crear una tabla de cubo:

1. Establecer cubos obligatorios

Si el archivo es demasiado pequeño, incluso si se crea la tabla de categorías, no se puede agrupar, por lo que debe forzar la división de acuerdo con los requisitos, y también establecer la reducción para distinguir por defecto.

set hive.enforce.bucketing=true;
set mapreduce.job.reduces=-1;

2. Crear una tabla de cubo

create table stu_buck(id int, name string)
clustered by(id) 
into 4 buckets
row format delimited fields terminated by '\t';

Lo anterior se agrupa según la identificación del campo, el número de cubos es 4.
Inserte la descripción de la imagen aquí

3. Agregar datos a la tabla de cubo

Dado que la condición de almacenamiento es el cálculo hash de acuerdo con el campo detrás del cual se agrupa cuando se crea la tabla, el programa mapreduce debe usarse al agregar datos, y el método de carga normal no puede almacenarse.

  • Cree una tabla similar, independientemente del cubo:
create table stu(id int, name string)
row format delimited fields terminated by '\t';

Inserte la descripción de la imagen aquí

  • Subir datos a la tabla stu:
load data local inpath '/home/hive/student.txt' into table stu;

Inserte la descripción de la imagen aquí

  • Importar datos a la tabla de cubo por subconsulta:
insert into table stu_buck select id, name from stu;

Inserte la descripción de la imagen aquíInserte la descripción de la imagen aquí

4. Consulta de muestreo de cubeta

Para conjuntos de datos muy grandes, a veces los usuarios necesitan usar un resultado de consulta representativo en lugar de todos los resultados. Hive puede satisfacer esta demanda al probar la tabla.
Consulta los datos en la tabla stu_buck.

select * from stu_buck tablesample(bucket 1 out of 4 on id);

Nota: tablesample es una declaración de muestreo, sintaxis: TABLESAMPLE (BUCKET x OUT OF y).
y debe ser un múltiplo o factor del número total de cubos en la tabla. Hive decide la relación de muestreo de acuerdo con el tamaño de y. Por ejemplo, la tabla se divide en 4 partes: cuando y = 2, se extraen los datos de 2 cubos (4/2 =); cuando y = 8, se extraen los datos de 1/2 cubos (4/8 =).
x indica desde qué depósito iniciar la extracción. Si es necesario tomar varias particiones, el número de partición posterior es el número de partición actual más y. Por ejemplo, el número total de cubos de tabla es 4, muestra de tabla (cubo 1 de 2), lo que significa que se extraen un total de (4/2 =) 2 cubos de datos, y los primeros cubos (x) y 3 (x + y) Datos.
Nota: El valor de x debe ser menor o igual que el valor de y, de lo contrario
FALLIDO: SemanticException [Error 10061]: El numerador no debe ser mayor que el denominador en la cláusula de muestra para la tabla stu_buck
Inserte la descripción de la imagen aquí

Publicado 39 artículos originales · ganado elogios 1 · vistas 4620

Supongo que te gusta

Origin blog.csdn.net/thetimelyrain/article/details/104170307
Recomendado
Clasificación