Consultas de Hive: ordenar por, agrupar por, distribuir por, agrupar por ejemplos

Hive proporciona un lenguaje de consulta de tipo SQL para el propósito de ETL sobre el sistema de archivos Hadoop.

El lenguaje de consulta Hive (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 características:

  • 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
  • Se 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 sobre Hadoop

En este artículo, aprenderá:

  • Ordenar por consulta
  • Agrupar por consulta
  • Ordenar por
  • Agrupar por
  • Distribuir por

Crear tabla en Hive

Antes de comenzar 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 la tabla "employee_guru" con 6 columnas.

De la captura de pantalla anterior,

  1. Estamos creando la tabla "employee_guru" con 6 valores de columna como Id, Nombre, Edad, Dirección, Salario, Departamento, que pertenece a los empleados presentes en la organización "Guru".
  2. Aquí, en este paso, estamos cargando datos en la tabla employee_guru. Los datos que vamos a cargar se colocarán en el archivo Employees.txt

Ordenar por consulta:

La sintaxis de ORDER BY en HiveQL es similar a la sintaxis de ORDER BY en lenguaje SQL.

Order by es la cláusula que usamos con la instrucción "SELECT" en las consultas de Hive, que ayuda a ordenar los datos. Ordenar por cláusula use columnas en tablas de Hive para ordenar valores de columna particulares mencionados con Ordenar por. Cualquiera que sea el nombre de la columna, estamos definiendo el orden por cláusula, la consulta seleccionará y mostrará los resultados en orden ascendente o descendente de los valores de columna en particular.

Si el orden por campo mencionado es una cadena, mostrará el resultado en orden lexicográfico. En la parte posterior, debe pasar a un solo reductor.

En la captura de pantalla anterior, podemos observar lo siguiente

  1. Es la consulta que se realiza en la tabla "employee_guru" con la cláusula ORDER BY con el departamento definido como el nombre de la columna ORDER BY.

    "Departamento" es una cadena, por lo que mostrará los resultados según el orden lexicográfico.

  2. Esta es la salida real de la consulta. Si lo observamos correctamente, podemos ver que obtiene resultados que se muestran en función de la columna de Departamento, como ADMIN, Finanzas, etc., para que se realice la consulta.

Consulta :

SELECT * FROM employees_guru ORDER BY Department;

Agrupar por consulta:

Agrupar por cláusula usa columnas en tablas de Hive para agrupar valores de columna 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 columna en particular.

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

  1. Es la consulta que se realiza en la tabla "employee_guru" con la cláusula GROUP BY con Departamento como nombre de columna GROUP BY definido.
  2. El resultado que se muestra aquí es el nombre del departamento y los empleados cuentan en diferentes departamentos. Aquí todos los empleados que pertenecen al departamento específico se agrupan y se muestran en los resultados. Entonces, el resultado es el nombre del departamento con el número total de empleados presentes en cada departamento.

Consulta:

SELECT Department, count(*) FROM employees_guru GROUP BY Department;

Ordenar por:

La cláusula Ordenar por actúa en los nombres de columna de las tablas de Hive para ordenar la salida. Podemos mencionar DESC para ordenar el orden en orden descendente y mencionar ASC para el orden ascendente del género.

De este modo, clasificará las filas antes de alimentar al reductor. Ordenar siempre por depende de los tipos de columna.

Por ejemplo, si los tipos de columna son numéricos, se ordenará en orden numérico, si los tipos de columnas son cadenas, se ordenará en orden lexicográfico.

De la captura de pantalla anterior podemos observar lo siguiente:

  1. Es la consulta que se realiza en la tabla "employee_guru" con la cláusula SORT BY con "id" como define el nombre de la columna SORT BY. Usamos la palabra clave DESC.
  2. Entonces, la salida mostrada estará en orden descendente de "id".

Consulta:

SELECT * from employees_guru SORT BY Id DESC;

Agrupar por:

Cluster By utilizado como alternativa para las cláusulas Distribute BY y Sort BY en Hive-QL.

Cluster BY cláusula utilizada en tablas presentes en Hive. Hive usa las columnas en Cluster by para distribuir las filas entre reductores. Las columnas Cluster BY irán a los múltiples reductores.

  • Asegura el orden de clasificación de los valores presentes en múltiples reductores.

Por ejemplo, la cláusula Cluster By mencionada en el nombre de la columna Id de la tabla Employees_guru. La salida 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 ordenar por, agrupar por y agrupar por en términos de Map reduce framework. Entonces, si queremos almacenar los resultados en múltiples reductores, optamos por Cluster By.

De la captura de pantalla anterior, obtenemos las siguientes observaciones:

  1. Es la consulta que realiza la cláusula CLUSTER BY en el valor del campo Id. Aquí va a obtener una especie de valores de Id.
  2. Muestra el Id y los nombres presentes en el orden 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 reductores. Todas las columnas Distribute BY irán al mismo reductor.

  • Asegura que cada uno de los N reductores obtenga rangos de columna que no se superpongan
  • No clasifica la salida de cada reductor

De la captura de pantalla anterior, podemos observar lo siguiente

  1. DISTRIBUTE BY Cláusula que se ejecuta en el ID de la tabla "empoloyees_guru"
  2. Salida que muestra Id, Nombre. Al final, irá al mismo reductor.

Consulta:

SELECT Id, Name from employees_guru DISTRIBUTE BY Id;

Articulos interesantes...