Consultas de Hive: ordenar por, agrupar por, distribuir por, Cluster Por ejemplos
Hive proporciona un lenguaje de consulta de tipo SQL para fines ETL ademรกs de Hadoop sistema de archivos.
El lenguaje Hive Query (HiveQL) proporciona un entorno de tipo SQL en Hive para trabajar con tablas, bases de datos y consultas.
Podemos tener un tipo diferente de clรกusulas asociadas con Hive para realizar consultas y manipulaciones de datos de diferentes tipos. Para una mejor conectividad con diferentes nodos fuera del entorno. HIVE tambiรฉn proporciona conectividad JDBC.
Las consultas de Hive proporcionan las siguientes funciones:
- Modelado de datos como Creaciรณn de bases de datos, tablas, etc.
- Funcionalidades ETL como Extractransformaciรณn y carga de datos en tablas
- Une para fusionar diferentes tablas de datos
- Scripts personalizados especรญficos del usuario para facilitar el cรณdigo
- Herramienta de consulta mรกs rรกpida ademรกs de Hadoop
Creando una tabla en Hive
Antes de iniciar con nuestro tema principal para este tutorial, primero crearemos una tabla para usarla como referencia para el siguiente tutorial.
Aquรญ, en este tutorial, vamos a crear una tabla "employees_guru" con 6 columnas.
De la captura de pantalla anterior,
- Estamos creando una tabla "employees_guru" con valores de 6 columnas como Id., Nombre, Edad, Direcciรณn, Salario, Departamento, que pertenece a los empleados presentes en la organizaciรณn "guru".
- Aquรญ, en este paso, estamos cargando datos en la tabla Employees_guru. Los datos que vamos a cargar se colocarรกn en el archivo Employees.txt.
Ordenar por consulta
La sintaxis ORDER BY en HiveQL es similar a la sintaxis de ORDER BY en SQL idioma.
Ordenar por es la clรกusula que utilizamos con la declaraciรณn "SELECT" en consultas de colmena, que ayuda a ordenar los datos. La clรกusula Ordenar por utiliza columnas en las tablas de Hive para ordenar valores de columna particulares mencionados con Ordenar por. Cualquiera que sea el nombre de la columna, estamos definiendo la clรกusula ordenar por, la consulta seleccionarรก y mostrarรก los resultados en orden ascendente o descendente de los valores de la columna en particular.
Si el orden mencionado por campo es una cadena, mostrarรก el resultado en orden lexicogrรกfico. En la parte trasera, debe pasarse a un รบnico reductor.
De la captura de pantalla anterior, podemos observar lo siguiente
- Es la consulta que se realiza en la tabla "employees_guru" con la clรกusula ORDER BY con Departamento como nombre de columna ORDER BY definido. "Departamento" es una cadena, por lo que mostrarรก los resultados segรบn el orden lexicogrรกfico.
- Este es el resultado real de la consulta. Si lo observamos correctamente, podemos ver que obtiene resultados que se muestran segรบn la columna del Departamento, como ADMINISTRADOR, FINANZAS, etc., para que se realice la consulta.
Consulta :
SELECT * FROM employees_guru ORDER BY Department;
Agrupar por consulta
La clรกusula GROUP BY utiliza columnas en las tablas de Hive para agruparping valores de columna particulares mencionados con group by. Para cualquier nombre de columna que estemos definiendo una clรกusula โgroupbyโ, la consulta seleccionarรก y mostrarรก los resultados por grupo.ping los valores de columna especรญficos.
Por ejemplo, en la siguiente captura de pantalla se mostrarรก el recuento total de empleados presentes en cada departamento. Aquรญ tenemos "Departamento" como Grupo por valor.
De la captura de pantalla anterior, observaremos lo siguiente
- Es la consulta que se realiza en la tabla โemployees_guruโ con la clรกusula GROUP BY con Departamento como nombre de columna GROUP BY definido.
- El resultado que se muestra aquรญ es el nombre del departamento y el nรบmero de empleados en los diferentes departamentos. Aquรญ, todos los empleados que pertenecen al departamento especรญfico se agrupan y se muestran en los resultados. Por lo tanto, el resultado es el nombre del departamento con la cantidad total de empleados presentes en cada departamento.
consulta:
SELECT Department, count(*) FROM employees_guru GROUP BY Department;
Ordenar por
La clรกusula Ordenar por se ejecuta en los nombres de las columnas de las tablas de Hive para ordenar la salida. Podemos mencionar DESC para ordenar el orden en orden descendente y mencionar ASC para ordenar el orden ascendente.
En esta clasificaciรณn, ordenarรก las filas antes de alimentarlas al reductor. Ordenar siempre depende del tipo de columna.
Por ejemplo, si los tipos de columnas son numรฉricos, se ordenarรกn en orden numรฉrico, si los tipos de columnas son cadenas, se ordenarรกn en orden lexicogrรกfico.
De la captura de pantalla anterior podemos observar lo siguiente:
- Es la consulta que se realiza en la tabla "employees_guru" con la clรกusula SORT BY con "id" como define el nombre de la columna SORT BY. Usamos la palabra clave DESC.
- Por lo tanto, la salida mostrada estarรก en orden descendente de โidโ.
consulta:
SELECT * from employees_guru SORT BY Id DESC;
Cluster By
Cluster By se utiliza como alternativa para las clรกusulas Distribute BY y Sort BY en Hive-QL.
Cluster Clรกusula BY utilizada en tablas presentes en Hive. Hive usa las columnas en Cluster by para distribuir las filas entre los reductores. Cluster Las columnas BY irรกn a los mรบltiples reductores.
- Garantiza la clasificaciรณn de los valores presentes en mรบltiples reductores.
Por ejemplo, Cluster Por clรกusula mencionada en el nombre de la columna Id de la tabla Employees_guru. El resultado al ejecutar esta consulta darรก resultados a mรบltiples reductores en el back-end. Pero como interfaz es una clรกusula alternativa tanto para Ordenar por como para Distribuir por.
En realidad, este es un proceso de back-end cuando realizamos una consulta con ordenaciรณn por, agrupaciรณn por y agrupaciรณn por en tรฉrminos del marco de trabajo MapReduce. Por lo tanto, si queremos almacenar resultados en varios reductores, utilizamos Cluster Por.
De la captura de pantalla anterior obtenemos las siguientes observaciones:
- Es la consulta que ejecuta la clรกusula CLUSTER BY sobre el valor del campo Id. Aquรญ se va a ordenar segรบn los valores Id.
- Muestra la identificaciรณn y los nombres presentes en la clasificaciรณn guru_employees ordenados por
consulta:
SELECT Id, Name from employees_guru CLUSTER BY Id;
Distribuir por
Distribuir la clรกusula BY utilizada en las tablas presentes en Hive. Hive usa las columnas en Distribuir por para distribuir las filas entre los reductores. Todas las columnas Distribuir POR irรกn al mismo reductor.
- Esto garantiza que cada uno de los N reductores no se superponga.ping rangos de columna
- No ordena la salida de cada reductor.
De la captura de pantalla anterior, podemos observar lo siguiente
- DISTRIBUIR POR Clรกusula que se ejecuta en el Id. de la tabla "empoloyees_guru"
- Salida que muestra Id. y nombre. En el back-end, irรก al mismo reductor.
consulta:
SELECT Id, Name from employees_guru DISTRIBUTE BY Id;






