Guía de optimización de Hive_Hive

Optimización de la operación SQL de Hive, podemos comenzar desde los siguientes aspectos

 

Introducción a la dirección de optimización.

 

Escena 1. Problema de deduplicación

Escenario 2. Reducir el número de TRABAJOS de cierta manera

Escenario 3. Controlar razonablemente el número de paralelos

Escenario 4. Controle el número de nodos / archivos en la tarea

Escenario 5. Problema de clasificación

Escenario 6. Reduzca el costo de cómputo y el costo de transmisión de datos de Reducir poniendo más presión en el lado del Mapa

Escenario 7. Problema de sesgo de datos

Escena 8. Problema de recorte de datos

Escenario 9. Reduzca el número de IO

 

Veamos este problema en detalle.

 

Lista detallada de direcciones de optimización

 

CONSEJOS: Algunos detalles de optimización, la longitud del caso es demasiado larga, se iniciará un artículo separado.

 

Escena 1. Problema de deduplicación

1) UNION: la diferencia entre UNION ALL, cómo elegir

2) DISTINTA forma alternativa GRUPO POR

Enlace del artículo: https://blog.csdn.net/u010003835/article/details/105493563

 

Escenario 2. Reducir la cantidad de TRABAJO

1) Use UNION ALL hábilmente para reducir el número de TRABAJOS

2) Use la misma condición JOIN de varias tablas para reducir el número de TRABAJOS

Enlace del artículo: https://blog.csdn.net/u010003835/article/details/105493938

 

Escenario 3. Control paralelo razonable

Uso razonable del control de parámetros en paralelo.

Para la siguiente declaración

1) UNIR TODO

2) ÚNETE

Enlace del artículo: https://blog.csdn.net/u010003835/article/details/105494048

 

Escenario 4. Controle el número de nodos / archivos en la tarea

1) Control de cantidad del mapeador

2) control de cantidad reductor

3) Controla el número de archivos que sale Mapper y Reducer

Enlace del artículo: https://blog.csdn.net/u010003835/article/details/105494261

 

Escenario 5. Problema de clasificación

1) Use ORDER BY y SORT BY razonablemente, y elija entre los dos

2) Limite la salida ordenada usando LIMIT

Enlace del artículo: https://blog.csdn.net/u010003835/article/details/105494790

 

Escenario 6. Reduzca el costo computacional y el costo de transmisión de datos del reductor al permitir que el MAP finalice más tareas.

1) El camino de MAP JOIN

2) MAP AGGR, preagregación en el lado del Mapa

 

Escenario 7. Problema de sesgo de datos

  1) Desviación de datos causada por un valor nulo

  2) Debido a los tipos de datos inconsistentes, los problemas de conversión causados, lo que resulta en un sesgo de datos

  3) Los datos comerciales en sí se distribuyen de manera desigual, lo que resulta en un sesgo de datos

 

Escena 8. Problema de recorte de datos

1) Recorte de número de registro

   Desarrollar a través de las ventajas de la partición y la tabla de cubo 

  ii) Elimine los registros inválidos a través de las condiciones de filtrado, de modo que los datos inválidos se eliminen en la etapa del mapa

2) Recorte de columna

 Eliminar los datos de columna no calculados no válidos

 ii. Usar almacenamiento columnar

 

 

Escenario 9. Reduzca el número de IO

1) Insertar desde varias tablas DESDE A INSERTAR B SELECCIONAR a, ... INSERTAR C SELECCIONAR a, ...

2) Ingrese una vez, use WITH TABLE AS (...) varias veces

 

 

Echemos un vistazo a estas nueve direcciones de optimización por separado.

 

Tabla de prueba y datos de prueba

+----------------------------------------------------+
|                   createtab_stmt                   |
+----------------------------------------------------+
| CREATE TABLE `datacube_salary_org`(                |
|   `company_name` string COMMENT '????',            |
|   `dep_name` string COMMENT '????',                |
|   `user_id` bigint COMMENT '??id',                 |
|   `user_name` string COMMENT '????',               |
|   `salary` decimal(10,2) COMMENT '??',             |
|   `create_time` date COMMENT '????',               |
|   `update_time` date COMMENT '????')               |
| PARTITIONED BY (                                   |
|   `pt` string COMMENT '????')                      |
| ROW FORMAT SERDE                                   |
|   'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'  |
| WITH SERDEPROPERTIES (                             |
|   'field.delim'=',',                               |
|   'serialization.format'=',')                      |
| STORED AS INPUTFORMAT                              |
|   'org.apache.hadoop.mapred.TextInputFormat'       |
| OUTPUTFORMAT                                       |
|   'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' |
| LOCATION                                           |
|   'hdfs://cdh-manager:8020/user/hive/warehouse/data_warehouse_test.db/datacube_salary_org' |
| TBLPROPERTIES (                                    |
|   'transient_lastDdlTime'='1586310488')            |
+----------------------------------------------------+
+-----------------------------------+-------------------------------+------------------------------+--------------------------------+-----------------------------+----------------------------------+----------------------------------+-------------------------+
| datacube_salary_org.company_name  | datacube_salary_org.dep_name  | datacube_salary_org.user_id  | datacube_salary_org.user_name  | datacube_salary_org.salary  | datacube_salary_org.create_time  | datacube_salary_org.update_time  | datacube_salary_org.pt  |
+-----------------------------------+-------------------------------+------------------------------+--------------------------------+-----------------------------+----------------------------------+----------------------------------+-------------------------+
| s.zh                              | engineer                      | 1                            | szh                            | 28000.00                    | 2020-04-07                       | 2020-04-07                       | 20200405                |
| s.zh                              | engineer                      | 2                            | zyq                            | 26000.00                    | 2020-04-03                       | 2020-04-03                       | 20200405                |
| s.zh                              | tester                        | 3                            | gkm                            | 20000.00                    | 2020-04-07                       | 2020-04-07                       | 20200405                |
| x.qx                              | finance                       | 4                            | pip                            | 13400.00                    | 2020-04-07                       | 2020-04-07                       | 20200405                |
| x.qx                              | finance                       | 5                            | kip                            | 24500.00                    | 2020-04-07                       | 2020-04-07                       | 20200405                |
| x.qx                              | finance                       | 6                            | zxxc                           | 13000.00                    | 2020-04-07                       | 2020-04-07                       | 20200405                |
| x.qx                              | kiccp                         | 7                            | xsz                            | 8600.00                     | 2020-04-07                       | 2020-04-07                       | 20200405                |
| s.zh                              | engineer                      | 1                            | szh                            | 28000.00                    | 2020-04-07                       | 2020-04-07                       | 20200406                |
| s.zh                              | engineer                      | 2                            | zyq                            | 26000.00                    | 2020-04-03                       | 2020-04-03                       | 20200406                |
| s.zh                              | tester                        | 3                            | gkm                            | 20000.00                    | 2020-04-07                       | 2020-04-07                       | 20200406                |
| x.qx                              | finance                       | 4                            | pip                            | 13400.00                    | 2020-04-07                       | 2020-04-07                       | 20200406                |
| x.qx                              | finance                       | 5                            | kip                            | 24500.00                    | 2020-04-07                       | 2020-04-07                       | 20200406                |
| x.qx                              | finance                       | 6                            | zxxc                           | 13000.00                    | 2020-04-07                       | 2020-04-07                       | 20200406                |
| x.qx                              | kiccp                         | 7                            | xsz                            | 8600.00                     | 2020-04-07                       | 2020-04-07                       | 20200406                |
| s.zh                              | enginer                       | 1                            | szh                            | 28000.00                    | 2020-04-07                       | 2020-04-07                       | 20200407                |
| s.zh                              | enginer                       | 2                            | zyq                            | 26000.00                    | 2020-04-03                       | 2020-04-03                       | 20200407                |
| s.zh                              | tester                        | 3                            | gkm                            | 20000.00                    | 2020-04-07                       | 2020-04-07                       | 20200407                |
| x.qx                              | finance                       | 4                            | pip                            | 13400.00                    | 2020-04-07                       | 2020-04-07                       | 20200407                |
| x.qx                              | finance                       | 5                            | kip                            | 24500.00                    | 2020-04-07                       | 2020-04-07                       | 20200407                |
| x.qx                              | finance                       | 6                            | zxxc                           | 13000.00                    | 2020-04-07                       | 2020-04-07                       | 20200407                |
| x.qx                              | kiccp                         | 7                            | xsz                            | 8600.00                     | 2020-04-07                       | 2020-04-07                       | 20200407                |
+-----------------------------------+-------------------------------+------------------------------+--------------------------------+-----------------------------+----------------------------------+----------------------------------+-------------------------+

 

 

 

Escena 1. Problema de deduplicación

1) UNION: la diferencia entre UNION ALL, cómo elegir

2) DISTINTA forma alternativa GRUPO POR

 

 

Escenario 2. Reducir la cantidad de TRABAJO

1) Use UNION ALL hábilmente para reducir el número de TRABAJOS

2) Use la misma condición JOIN de varias tablas para reducir el número de TRABAJOS

 

 

Escenario 3. Control paralelo razonable

Uso razonable del control de parámetros en paralelo.

Para la siguiente declaración

1) UNIR TODO

2) ÚNETE

 

Escenario 4. Controle el número de nodos / archivos en la tarea

1) Control de cantidad del mapeador

2) control de cantidad reductor

3) Controla el número de archivos que sale Mapper y Reducer

 

 

Escenario 5. Problema de clasificación

1) Use ORDER BY y SORT BY razonablemente, y elija entre los dos

2) Limite la salida ordenada usando LIMIT

 

 

 

 

Escenario 6. Reduzca el costo computacional y el costo de transmisión de datos del reductor permitiendo que el MAP finalice más tareas

1) El camino de MAP JOIN

2) MAP AGGR, preagregación en el lado del Mapa

 

 

 

 

 

Escenario 7. Problema de sesgo de datos

1) Desviación de datos causada por un valor nulo

2) Debido a los tipos de datos inconsistentes, los problemas de conversión causados, lo que resulta en un sesgo de datos

3) Los datos comerciales en sí se distribuyen de manera desigual, lo que resulta en un sesgo de datos

 

 

 

Escena 8. Problema de recorte de datos

1) Recorte de número de registro

   Desarrollar a través de las ventajas de la partición y la tabla de cubo 

  ii) Elimine los registros inválidos a través de las condiciones de filtrado, de modo que los datos inválidos se eliminen en la etapa del mapa

2) Recorte de columna

 Eliminar los datos de columna no calculados no válidos

 ii. Usar almacenamiento columnar

 

 

 

 

Escenario 9. Reduzca el número de IO

1) Insertar desde varias tablas DESDE A INSERTAR B SELECCIONAR a, ... INSERTAR C SELECCIONAR a, ...

2) Ingrese una vez, use WITH TABLE AS (...) varias veces

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Burbujeante

519 artículos originales publicados · elogiados 1146 · 2,83 millones de visitas

Supongo que te gusta

Origin blog.csdn.net/u010003835/article/details/105334641
Recomendado
Clasificación