Optimización de la construcción del cubo Kylin.

Dimensión derivada

El concepto

  Las dimensiones derivadas se utilizan para excluir dimensiones de clave no primaria en la tabla de dimensiones dentro de la dimensión efectiva, y utilizar la clave primaria de la tabla de dimensiones (de hecho, la clave externa correspondiente en la tabla de hechos) para reemplazarlas. Kylin registra la relación de mapeo entre la clave primaria de la tabla de dimensiones y otras dimensiones de la tabla de dimensiones en la parte inferior, para que pueda "traducir" dinámicamente la clave primaria de la tabla de dimensiones en estas dimensiones de clave no primaria durante la consulta, y realizar la agregación en tiempo real.

Nota:

Aunque la dimensión derivada es muy atractiva, no significa que todas las dimensiones de la tabla de dimensiones deben convertirse en la dimensión derivada. Si la carga de trabajo de agregación de la clave principal de la tabla de dimensiones a una dimensión de tabla de dimensiones es muy grande, entonces No se recomiendan las dimensiones derivadas.

Como se muestra

 

Cuando se construyó originalmente en tres dimensiones, cuboide = 2 ^ 3 -1 = 7 

A es la clave principal en la tabla de dimensiones, y no se repite, entonces E puede considerarse como una dimensión derivada de A, y A puede usarse para reemplazar la dimensión E durante la construcción, por lo que en la construcción final, Cuboid = 2 ^ 2 -1 = 3

De esta manera, la eficiencia de construir el cubo será muy alta, y si la dimensión de E se diseña durante la consulta, A será reemplazado por E para obtener el resultado.

Operación específica

Al seleccionar dimensiones, las dimensiones derivadas en la tabla de dimensiones seleccionada

 

 Luego, seleccione las claves principales de estas dos tablas de dimensiones en el grupo de agregación

 

 Después de configurar, puedes ver Cuboid = 3

 

 Establecimiento de dimensiones en grupos de agregación

Dimensión obligatoria

Si una dimensión se define como una dimensión obligatoria, entonces cada uno de los Cuboides generados por esta agrupación contendrá esa dimensión, y los Cuboides que no contengan esta dimensión no se calcularán (no se contarán las dimensiones unidimensionales)

 

La operación es la siguiente

 

 

 

Dimensión jerárquica

En términos simples, la dimensión B depende de la dimensión A. Si solo B no tiene A, no se calculará.

 

La operación es la siguiente

 

 

 

 

 

 Dimensión conjunta

Las dimensiones conjuntas deben existir simultáneamente

 

 

 

 

 

 Diseño RowKey

1 ) La dimensión utilizada como el filtro donde se coloca delante.

 

 

2 ) La dimensión con una gran cardinalidad se coloca antes de la dimensión con una pequeña cardinalidad.

Cuando el cubo se agrega de 3D a 2D, el valor predeterminado es seleccionar un 3D con un pequeño cuboide para la agregación. Se puede ver en la figura que la cardinalidad de C es mucho mayor que la cardinalidad de D, por lo que la velocidad de cálculo a la derecha será un poco más rápida

 

 

Operación

 

 Optimización granular de concurrencia (comprender)

    

Cuando el tamaño de un Cuboide en el segmento excede un cierto umbral, el sistema dividirá los datos del Cuboide en múltiples particiones para paralelizar la lectura de los datos del Cuboide, 
optimizando así la velocidad de consulta del Cubo. El método de implementación específico es el siguiente: el motor de construcción determina el tamaño del segmento de acuerdo con el tamaño del segmento y el parámetro "kylin.hbase.region.cut" para determinar cuántos segmentos necesita almacenar el segmento en el
motor de almacenamiento . Si el motor de almacenamiento es HBase, entonces la partición El número corresponde al número de regiones en HBase. El valor predeterminado de kylin.hbase.region.cut es 5.0, y la unidad es GB, lo que significa que para un segmento con un tamaño estimado de 50 GB, el motor de construcción le asignará 10 particiones.
Los usuarios también pueden determinar el número mínimo o máximo de cada segmento estableciendo kylin.hbase.region.count.min (el valor predeterminado es 1) y kylin.hbase.region.count.max (el valor predeterminado es 500) dos configuraciones Partición

 

Los cubos se almacenan en forma de segmentos en HBase. De hecho, aquí se trata de optimizar la estrategia de partición de Hbase. Cuantas más particiones, mejor será la concurrencia. Generalmente, el valor predeterminado es mantenerlo.

Método de ajuste

 

Supongo que te gusta

Origin www.cnblogs.com/yangxusun9/p/12731028.html
Recomendado
Clasificación