Ejecución de las consultas de Apache Hive mediante las herramientas de Data Lake para Visual Studio

Aprenda a usar las herramientas de Data Lake para Visual Studio a fin de realizar consultas en Apache Hive. Las herramientas de Data Lake permiten crear, enviar y supervisar fácilmente consultas de Hive en Apache Hadoop en Azure HDInsight.

Requisitos previos

Ejecución de consultas de Apache Hive con Visual Studio

Para crear y ejecutar consultas de Hive tiene dos opciones:

  • Crear consultas ad hoc.
  • Crear una aplicación de Hive.

Creación de una consulta ad hoc de Hive

Las consultas ad hoc se pueden ejecutar en el modo Lotes o Interactivo.

  1. Inicie Visual Studio y seleccione Continuar sin código.

  2. En el Explorador de servidores, haga clic con el botón derecho en Azure, seleccione Conectar a la suscripción de Microsoft Azure... y complete el proceso de inicio de sesión.

  3. Expanda HDInsight, haga clic con el botón derecho en el clúster donde quiere ejecutar la consulta y seleccione Escribir una consulta de Hive.

  4. Especifique esta consulta de Hive:

    SELECT * FROM hivesampletable;
    
  5. Seleccione Ejecutar. El valor predeterminado del modo de ejecución es Interactivo.

    Execute interactive Hive query, Visual Studio.

  6. Para ejecutar la misma consulta en el modo Lotes, cambie la lista desplegable de Interactivo a Lotes. El botón de ejecución cambia de Ejecutar a Enviar.

    Submit batch Hive query, Visual Studio.

    El editor de Hive es compatible con IntelliSense. Data Lake Tools para Visual Studio es compatible con la carga de metadatos remotos cuando se edita un script de Hive. Por ejemplo, si escribe SELECT * FROM, IntelliSense enumera todos los nombres de tabla sugeridos. Cuando se especifica un nombre de tabla, IntelliSense enumera los nombres de columna. Las herramientas admiten casi todas las instrucciones DML de Hive, subconsultas y UDF integradas. IntelliSense solo sugiere los metadatos del clúster que se seleccionan en la barra de herramientas de HDInsight.

  7. En la barra de herramientas de consulta (el área situada debajo de la pestaña de consulta y encima del texto de la consulta), seleccione Enviar o haga clic en la flecha desplegable situada junto a Enviar y elija Opciones avanzadas. Si selecciona la última opción,

  8. Si selecciona la opción de envío avanzado, configure las opciones Nombre del trabajo, Argumentos, Configuraciones adicionales y Estado de directorio en el cuadro de diálogo Enviar script. Después, seleccione Enviar.

    Submit Script dialog box, HDInsight Hadoop Hive query.

Crear una aplicación de Hive

Para ejecutar una consulta de Hive creando una aplicación de Hive, siga estos pasos:

  1. Abra Visual Studio.

  2. En la ventana Inicio, seleccione Crear un proyecto.

  3. En la ventana Crear un nuevo proyecto, en el cuadro Buscar plantillas, escriba Hive. A continuación, elija Aplicación de Hive y seleccione Siguiente.

  4. En la ventana Configure su nuevo proyecto, escriba el nombre del proyecto, seleccione o cree una ubicación para el nuevo proyecto y haga clic en Crear.

  5. Abra el archivo Script.hql creado con este proyecto y péguelo en las siguientes instrucciones de HiveQL:

    set hive.execution.engine=tez;
    DROP TABLE log4jLogs;
    CREATE EXTERNAL TABLE log4jLogs (t1 string, t2 string, t3 string, t4 string, t5 string, t6 string, t7 string)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
    STORED AS TEXTFILE LOCATION '/example/data/';
    SELECT t4 AS sev, COUNT(*) AS count FROM log4jLogs WHERE t4 = '[ERROR]' AND  INPUT__FILE__NAME LIKE '%.log' GROUP BY t4;
    

    Estas instrucciones realizan las acciones siguientes:

    • DROP TABLE: elimina la tabla, si existe.

    • CREATE EXTERNAL TABLE: Crea una tabla 'externa' en Hive. Las tablas externas solo almacenan la definición de Tabla en Hive. (Los datos permanecen en la ubicación original).

      Nota

      Las tablas externas deben utilizarse si espera que los datos subyacentes se actualicen mediante un origen externo, como un trabajo de MapReduce o un servicio de Azure.

      La eliminación de una tabla externa no elimina los datos, solamente la definición de tabla.

    • ROW FORMAT: Indica cómo se da formato a los datos de Hive. En este caso, los campos de cada registro se separan mediante un espacio.

    • STORED AS TEXTFILE LOCATION: indica a Hive que los datos deben almacenarse en el directorio example/data como texto.

    • SELECT: selecciona todas las filas en las que la columna t4 contiene el valor [ERROR]. Esta instrucción devuelve el valor 3 porque hay tres filas que contienen este valor.

    • INPUT__FILE__NAME LIKE '%.log': indica a Hive que solo debe devolver datos de los archivos que terminan por .log. Esta cláusula limita la búsqueda al archivo sample.log que contiene los datos.

  6. En la barra de herramientas del archivo de consulta (que tiene una apariencia similar a la de la barra de herramientas de consultas ad hoc), seleccione el clúster de HDInsight que desea usar para esta consulta. A continuación, cambie Interactivo a Lote (si es necesario) y seleccione Enviar para ejecutar las instrucciones como un trabajo de Hive.

    El resumen del trabajo de Hive aparecerá y mostrará información sobre el trabajo en ejecución. Use el vínculo Actualizar para actualizar la información del trabajo, hasta que el estado del trabajo cambie a Completado.

    Completed Hive job summary, Hive application, Visual Studio.

  7. Seleccione Salida del trabajo para ver el resultado de este trabajo. Muestra [ERROR] 3, que es el valor que devuelve esta consulta.

Ejemplo adicional

El ejemplo siguiente se basa en la tabla log4jLogs creada en el procedimiento anterior, Creación de una aplicación de Hive.

  1. En el Explorador de servidores, haga clic con el botón derecho en el clúster y seleccione Escribir una consulta de Hive.

  2. Especifique esta consulta de Hive:

    set hive.execution.engine=tez;
    CREATE TABLE IF NOT EXISTS errorLogs (t1 string, t2 string, t3 string, t4 string, t5 string, t6 string, t7 string) STORED AS ORC;
    INSERT OVERWRITE TABLE errorLogs SELECT t1, t2, t3, t4, t5, t6, t7 FROM log4jLogs WHERE t4 = '[ERROR]' AND INPUT__FILE__NAME LIKE '%.log';
    

    Estas instrucciones realizan las acciones siguientes:

    • CREATE TABLE IF NOT EXISTS: crea una tabla, en caso de que no exista todavía. Como no se utiliza la palabra clave EXTERNAL, esta instrucción crea una tabla interna. Las tablas internas se guardan en el almacenamiento de datos de Hive y Hive las administra.

      Nota

      A diferencia de las tablas EXTERNAL, la eliminación de una tabla interna también eliminará los datos subyacentes.

    • STORED AS ORC: almacena los datos en formato de columnas de filas optimizadas (ORC). ORC es un formato altamente optimizado y eficiente para almacenar datos de Hive.

    • INSERT OVERWRITE ... SELECT: Selecciona filas de la tabla log4jLogs que contienen [ERROR] y luego inserta los datos en la tabla errorLogs.

  3. Si es necesario, cambie Interactivo por Lote y seleccione Enviar.

  4. Para comprobar si el trabajo creó la tabla, vaya al Explorador de servidores y expanda Azure>HDInsight. Expanda el clúster de HDInsight y después Bases de datos de Hive>predeterminado. La tabla errorLogs y la tabla log4jLogs aparecen en la lista.

Pasos siguientes

Como puede ver, las herramientas de HDInsight para Visual Studio proporcionan una manera sencilla de trabajar con consultas de Hive en HDInsight.