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 extracción, transformació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 agrupar valores de columnas particulares mencionados con el grupo por. Cualquiera que sea el nombre de la columna, estamos definiendo una cláusula "groupby", la consulta seleccionará y mostrará los resultados agrupando los valores de la columna particulares.
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.
- Garantiza que cada uno de los N reductores obtenga rangos de columna que no se superpongan.
- 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;