performance - Ejecute la consulta Hive con los parámetros de la cláusula IN en paralelo
hadoop hiveql (1)
No es necesario leer los mismos datos muchas veces en consultas separadas para lograr un mejor paralelismo. Sintonice el paralelismo apropiado del mapeador y el reductor para el mismo.
En primer lugar, habilite PPD con vectorización, use CBO y Tez:
SET hive.optimize.ppd=true;
SET hive.optimize.ppd.storage=true;
SET hive.vectorized.execution.enabled=true;
SET hive.vectorized.execution.reduce.enabled = true;
SET hive.cbo.enable=true;
set hive.stats.autogather=true;
set hive.compute.query.using.stats=true;
set hive.stats.fetch.partition.stats=true;
set hive.execution.engine=tez;
SET hive.stats.fetch.column.stats=true;
SET hive.tez.auto.reducer.parallelism=true;
Configuraciones de ejemplo para Mappers en Tez:
set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
set tez.grouping.max-size=32000000;
set tez.grouping.min-size=32000;
Configuraciones de ejemplo para Mappers si decide ejecutar MR en lugar de Tez:
set mapreduce.input.fileinputformat.split.minsize=32000;
set mapreduce.input.fileinputformat.split.maxsize=32000000;
- configuraciones de ejemplo para reductores:
set hive.exec.reducers.bytes.per.reducer=32000000; --decrease this to increase the number of reducers, increase to reduce parallelism
Juega con esta configuración. Los criterios de éxito son más mapeadores / reductores y su mapa y las etapas de reducción se ejecutan más rápido.
Lea este artículo para comprender mejor cómo ajustar Tez: https://community.hortonworks.com/articles/14309/demystify-tez-tuning-step-by-step.html
Tengo una consulta de Hive como la siguiente:
select a.x as column from table1 a where a.y in (<long comma-separated list of parameters>)
union all
select b.x as column from table2 b where b.y in (<long comma-separated list of parameters>)
He establecido
hive.exec.parallel
como
true
que me está ayudando a lograr el paralelismo entre las dos consultas entre union all.
Pero, mi cláusula
IN
tiene muchos valores separados por comas y cada valor se toma una vez en 1 trabajo y luego el siguiente valor.
Esto en realidad se está ejecutando secuencialmente.
¿Hay algún parámetro de colmena que, si está habilitado, puede ayudarme a buscar datos en paralelo para los parámetros en la cláusula
IN
?
Actualmente, la solución que tengo es activar la consulta de selección con
=
varias veces en lugar de una cláusula
IN
.