performance hadoop hive hiveql

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 .