Impala - Guía rápida

¿Qué es Impala?

Impala es un motor de consultas SQL MPP (Massive Parallel Processing) para procesar grandes volúmenes de datos que se almacenan en el clúster de Hadoop. Es un software de código abierto que está escrito en C ++ y Java. Proporciona alto rendimiento y baja latencia en comparación con otros motores SQL para Hadoop.

En otras palabras, Impala es el motor SQL de mayor rendimiento (brindando una experiencia similar a RDBMS) que proporciona la forma más rápida de acceder a los datos almacenados en el sistema de archivos distribuido Hadoop.

¿Por qué Impala?

Impala combina la compatibilidad con SQL y el rendimiento multiusuario de una base de datos analítica tradicional con la escalabilidad y flexibilidad de Apache Hadoop, utilizando componentes estándar como HDFS, HBase, Metastore, YARN y Sentry.

  • Con Impala, los usuarios pueden comunicarse con HDFS o HBase utilizando consultas SQL de una manera más rápida en comparación con otros motores SQL como Hive.

  • Impala puede leer casi todos los formatos de archivo como Parquet, Avro, RCFile utilizados por Hadoop.

Impala utiliza los mismos metadatos, sintaxis SQL (Hive SQL), controlador ODBC e interfaz de usuario (Hue Beeswax) que Apache Hive, lo que proporciona una plataforma familiar y unificada para consultas orientadas por lotes o en tiempo real.

A diferencia de Apache Hive, Impala is not based on MapReduce algorithms. Implementa una arquitectura distribuida basada endaemon processes que son responsables de todos los aspectos de la ejecución de consultas que se ejecutan en las mismas máquinas.

Por lo tanto, reduce la latencia de utilizar MapReduce y esto hace que Impala sea más rápido que Apache Hive.

Ventajas de Impala

Aquí hay una lista de algunas de las ventajas destacadas de Cloudera Impala.

  • Con impala, puede procesar datos almacenados en HDFS a la velocidad del rayo con el conocimiento tradicional de SQL.

  • Dado que el procesamiento de datos se lleva a cabo donde residen los datos (en el clúster de Hadoop), la transformación y el movimiento de datos no son necesarios para los datos almacenados en Hadoop mientras se trabaja con Impala.

  • Con Impala, puede acceder a los datos almacenados en HDFS, HBase y Amazon s3 sin el conocimiento de Java (trabajos de MapReduce). Puede acceder a ellos con una idea básica de las consultas SQL.

  • Para escribir consultas en herramientas comerciales, los datos deben pasar por un complicado ciclo de extracción-transformación-carga (ETL). Pero, con Impala, este procedimiento se acorta. Las etapas de carga y reorganización que requieren mucho tiempo se superan con las nuevas técnicas comoexploratory data analysis & data discovery haciendo el proceso más rápido.

  • Impala es pionero en el uso del formato de archivo Parquet, un diseño de almacenamiento en columnas optimizado para consultas a gran escala típicas en escenarios de almacenamiento de datos.

Características de Impala

A continuación se presentan las características de cloudera Impala:

  • Impala está disponible gratuitamente como código abierto bajo la licencia Apache.

  • Impala admite el procesamiento de datos en memoria, es decir, accede / analiza los datos almacenados en los nodos de datos de Hadoop sin movimiento de datos.

  • Puede acceder a los datos mediante Impala mediante consultas similares a SQL.

  • Impala proporciona un acceso más rápido a los datos en HDFS en comparación con otros motores SQL.

  • Con Impala, puede almacenar datos en sistemas de almacenamiento como HDFS, Apache HBase y Amazon s3.

  • Puede integrar Impala con herramientas de inteligencia empresarial como Tableau, Pentaho, Micro Strategy y Zoom Data.

  • Impala admite varios formatos de archivo, como LZO, Sequence File, Avro, RCFile y Parquet.

  • Impala utiliza metadatos, controlador ODBC y sintaxis SQL de Apache Hive.

Bases de datos relacionales e Impala

Impala utiliza un lenguaje de consulta similar a SQL y HiveQL. La siguiente tabla describe algunas de las diferencias clave entre SQL e Impala Query Language.

Impala Bases de datos relacionales
Impala utiliza un lenguaje de consulta similar a SQL que es similar a HiveQL. Las bases de datos relacionales utilizan lenguaje SQL.
En Impala, no puede actualizar ni eliminar registros individuales. En las bases de datos relacionales, es posible actualizar o eliminar registros individuales.
Impala no admite transacciones. Las bases de datos relacionales soportan transacciones.
Impala no admite la indexación. Las bases de datos relacionales admiten la indexación.
Impala almacena y gestiona grandes cantidades de datos (petabytes). Las bases de datos relacionales manejan cantidades más pequeñas de datos (terabytes) en comparación con Impala.

Hive, Hbase e Impala

Aunque Cloudera Impala usa el mismo lenguaje de consulta, metastore y la misma interfaz de usuario que Hive, difiere de Hive y HBase en ciertos aspectos. La siguiente tabla presenta un análisis comparativo entre HBase, Hive e Impala.

HBase Colmena Impala
HBase es una base de datos de almacenamiento de columna ancha basada en Apache Hadoop. Utiliza los conceptos de BigTable. Hive es un software de almacenamiento de datos. Con esto, podemos acceder y administrar grandes conjuntos de datos distribuidos, basados ​​en Hadoop. Impala es una herramienta para administrar y analizar datos almacenados en Hadoop.
El modelo de datos de HBase es un almacén de columnas amplias. Hive sigue el modelo relacional. Impala sigue el modelo relacional.
HBase está desarrollado utilizando lenguaje Java. Hive se desarrolla utilizando lenguaje Java. Impala se desarrolla utilizando C ++.
El modelo de datos de HBase no tiene esquemas. El modelo de datos de Hive está basado en esquemas. El modelo de datos de Impala está basado en esquemas.
HBase proporciona API de Java, RESTful y Thrift. Hive proporciona JDBC, ODBC, Thrift API. Impala proporciona API de JDBC y ODBC.
Admite lenguajes de programación como C, C #, C ++, Groovy, Java PHP, Python y Scala. Admite lenguajes de programación como C ++, Java, PHP y Python. Impala admite todos los idiomas compatibles con JDBC / ODBC.
HBase proporciona soporte para disparadores. Hive no proporciona ningún soporte para los desencadenantes. Impala no proporciona ningún soporte para los desencadenantes.

Todas estas tres bases de datos:

  • Son bases de datos NOSQL.

  • Disponible como código abierto.

  • Admite secuencias de comandos del lado del servidor.

  • Siga las propiedades de ACID como Durabilidad y Concurrencia.

  • Utilizar sharding para partitioning.

Inconvenientes de Impala

Algunos de los inconvenientes de usar Impala son los siguientes:

  • Impala no proporciona ningún soporte para serialización y deserialización.
  • Impala solo puede leer archivos de texto, no archivos binarios personalizados.
  • Siempre que se agreguen nuevos registros / archivos al directorio de datos en HDFS, la tabla debe actualizarse.

Este capítulo explica los requisitos previos para instalar Impala, cómo descargar, instalar y configurar Impala en su sistema.

Al igual que Hadoop y su software de ecosistema, necesitamos instalar Impala en el sistema operativo Linux. Dado que cloudera envió Impala, está disponible conCloudera Quick Start VM.

Este capítulo describe cómo descargar Cloudera Quick Start VM e inicie Impala.

Descarga de Cloudera Quick Start VM

Siga los pasos que se indican a continuación para descargar la última versión de Cloudera QuickStartVM.

Paso 1

Abra la página de inicio del sitio web de cloudera http://www.cloudera.com/. Obtendrá la página como se muestra a continuación.

Paso 2

Haga clic en el Sign in en la página de inicio de cloudera, que lo redirigirá a la página de inicio de sesión como se muestra a continuación.

Si aún no se ha registrado, haga clic en el Register Now enlace que te dará Account Registrationformar. Regístrese allí e inicie sesión en la cuenta de cloudera.

Paso 3

Después de iniciar sesión, abra la página de descarga del sitio web de cloudera haciendo clic en el Downloads enlace resaltado en la siguiente instantánea.

Paso 4 - Descarga QuickStartVM

Descarga la cloudera QuickStartVM haciendo clic en el Download Now botón, como se destaca en la siguiente instantánea

Esto lo redireccionará a la página de descarga de QuickStart VM.

Haga clic en el Get ONE NOW , acepte el acuerdo de licencia y haga clic en el botón Enviar como se muestra a continuación.

Cloudera proporciona su VMware, KVM y VIRTUALBOX compatibles con VM. Seleccione la versión requerida. Aquí, en nuestro tutorial, estamos demostrandoCloudera QuickStartVM configuración mediante cuadro virtual, por lo tanto, haga clic en VIRTUALBOX DOWNLOAD , como se muestra en la instantánea que se muestra a continuación.

Esto comenzará a descargar un archivo llamado cloudera-quickstart-vm-5.5.0-0-virtualbox.ovf que es un archivo de imagen de caja virtual.

Importación de Cloudera QuickStartVM

Después de descargar el cloudera-quickstart-vm-5.5.0-0-virtualbox.ovfarchivo, necesitamos importarlo usando la caja virtual. Para eso, en primer lugar, debe instalar la caja virtual en su sistema. Siga los pasos que se indican a continuación para importar el archivo de imagen descargado.

Paso 1

Descargue la caja virtual desde el siguiente enlace e instálela https://www.virtualbox.org/

Paso 2

Abra el software de la caja virtual. Hacer clicFile y elige Import Appliance, Como se muestra abajo.

Paso 3

Al hacer clic Import Appliance, aparecerá la ventana Importar dispositivo virtual. Seleccione la ubicación del archivo de imagen descargado como se muestra a continuación.

Después de importar Cloudera QuickStartVMimagen, inicie la máquina virtual. Esta máquina virtual tiene Hadoop, cloudera Impala y todo el software requerido instalado. La instantánea de la VM se muestra a continuación.

Iniciando Impala Shell

Para iniciar Impala, abra la terminal y ejecute el siguiente comando.

[[email protected] ~] $ impala-shell

Esto iniciará el Impala Shell, mostrando el siguiente mensaje.

Starting Impala Shell without Kerberos authentication 
Connected to quickstart.cloudera:21000 
Server version: impalad version 2.3.0-cdh5.5.0 RELEASE (build
0c891d79aa38f297d244855a32f1e17280e2129b) 
********************************************************************************
 Welcome to the Impala shell. Copyright (c) 2015 Cloudera, Inc. All rights reserved. 
(Impala Shell v2.3.0-cdh5.5.0 (0c891d7) built on Mon Nov 9 12:18:12 PST 2015)
 
Press TAB twice to see a list of available commands. 
******************************************************************************** 
[quickstart.cloudera:21000] >

Note - Discutiremos todos los comandos de impala-shell en capítulos posteriores.

Editor de consultas Impala

Además de Impala shell, puede comunicarse con Impala utilizando el navegador Hue. Después de instalar CDH5 e iniciar Impala, si abre su navegador, obtendrá la página de inicio de cloudera como se muestra a continuación.

Ahora, haz clic en el marcador Huepara abrir el navegador Hue. Al hacer clic, puede ver la página de inicio de sesión del navegador Hue, iniciando sesión con las credenciales cloudera y cloudera.

Tan pronto como inicie sesión en el navegador Hue, podrá ver el Asistente de inicio rápido del navegador Hue como se muestra a continuación.

Al hacer clic en el Query Editors menú desplegable, obtendrá la lista de editores que Impala admite como se muestra en la siguiente captura de pantalla.

Al hacer clic Impala en el menú desplegable, obtendrá el editor de consultas de Impala como se muestra a continuación.

Impala es un motor de ejecución de consultas MPP (Massive Parallel Processing) que se ejecuta en varios sistemas del clúster de Hadoop. A diferencia de los sistemas de almacenamiento tradicionales, impala está desacoplado de su motor de almacenamiento. Tiene tres componentes principales, a saber, el demonio Impala (Impalad) , el Impala Statestore y los metadatos o metastore de Impala.

Demonio Impala ( Impalad )

Impala daemon (también conocido como impalad) se ejecuta en cada nodo donde está instalado Impala. Acepta las consultas de varias interfaces como impala shell, navegador hue, etc.… y las procesa.

Siempre que se envía una consulta a un impalad en un nodo en particular, ese nodo sirve como "coordinator node”Para esa consulta. Impalad también atiende varias consultas que se ejecutan en otros nodos. Después de aceptar la consulta, Impalad lee y escribe en archivos de datos y paraleliza las consultas distribuyendo el trabajo a los otros nodos de Impala en el clúster de Impala. Cuando las consultas se procesan en varias instancias de Impalad , todas devuelven el resultado al nodo de coordinación central.

Dependiendo del requisito, las consultas se pueden enviar a un Impalad dedicado o de manera equilibrada a otro Impalad en su clúster.

Tienda estatal Impala

Impala tiene otro componente importante llamado Impala State store, que es responsable de verificar el estado de cada Impalad y luego transmitir el estado de cada demonio Impala a los otros demonios con frecuencia. Esto puede ejecutarse en el mismo nodo donde se ejecuta el servidor Impala u otro nodo dentro del clúster.

El nombre del proceso del demonio de la tienda Impala State se almacena en el estado . Impalad informa su estado de salud al demonio de la tienda Impala State, es decir, el estado almacenado .

En caso de falla de un nodo debido a cualquier motivo, Statestore actualiza todos los demás nodos sobre esta falla y una vez que dicha notificación está disponible para el otro impalad , ningún otro demonio de Impala asigna más consultas al nodo afectado.

Impala Metadata & Meta Store

Impala metadata & meta store es otro componente importante. Impala utiliza bases de datos tradicionales MySQL o PostgreSQL para almacenar definiciones de tablas. Los detalles importantes, como la información de la tabla y la columna, y las definiciones de la tabla, se almacenan en una base de datos centralizada conocida como meta tienda.

Cada nodo de Impala almacena en caché todos los metadatos localmente. Cuando se trata de una gran cantidad de datos y / o muchas particiones, obtener metadatos específicos de la tabla puede llevar una cantidad de tiempo considerable. Por lo tanto, una caché de metadatos almacenada localmente ayuda a proporcionar dicha información al instante.

Cuando se actualiza una definición de tabla o datos de tabla, otros demonios de Impala deben actualizar su caché de metadatos recuperando los últimos metadatos antes de emitir una nueva consulta en la tabla en cuestión.

Interfaces de procesamiento de consultas

Para procesar consultas, Impala proporciona tres interfaces que se enumeran a continuación.

  • Impala-shell - Después de configurar Impala usando Cloudera VM, puede iniciar el shell de Impala escribiendo el comando impala-shellen el editor. Discutiremos más sobre el shell Impala en los próximos capítulos.

  • Hue interface- Puede procesar consultas de Impala utilizando el navegador Hue. En el navegador Hue, tiene el editor de consultas de Impala, donde puede escribir y ejecutar las consultas de Impala. Para acceder a este editor, en primer lugar, debe iniciar sesión en el navegador Hue.

  • ODBC/JDBC drivers- Al igual que otras bases de datos, Impala proporciona controladores ODBC / JDBC. Con estos controladores, puede conectarse a impala a través de lenguajes de programación que admiten estos controladores y crear aplicaciones que procesen consultas en impala utilizando esos lenguajes de programación.

Procedimiento de ejecución de consultas

Siempre que los usuarios pasen una consulta utilizando cualquiera de las interfaces proporcionadas, esto es aceptado por uno de los Impalads en el clúster. Este Impalad se trata como un coordinador para esa consulta en particular.

Después de recibir la consulta, el coordinador de consultas verifica si la consulta es apropiada, usando el Table Schemade la meta tienda de Hive. Posteriormente, recopila la información sobre la ubicación de los datos que se requieren para ejecutar la consulta, desde el nodo de nombre de HDFS y envía esta información a otros empalados para ejecutar la consulta.

Todos los demás demonios de Impala leen el bloque de datos especificado y procesan la consulta. Tan pronto como todos los demonios completan sus tareas, el coordinador de consultas recopila el resultado y se lo entrega al usuario.

En los capítulos anteriores, hemos visto la instalación de Impala usando cloudera y su arquitectura.

  • Impala shell (símbolo del sistema)
  • Hue (interfaz de usuario)
  • ODBC y JDBC (bibliotecas de terceros)

Este capítulo explica cómo iniciar Impala Shell y las distintas opciones del shell.

Referencia de comandos de Impala Shell

Los comandos del shell Impala se clasifican como general commands, query specific optionsy table and database specific options, como se explica a continuación.

Comandos generales

  • help
  • version
  • history
  • shell (o)!
  • connect
  • salir | dejar

Consultar opciones específicas

  • Set/unset
  • Profile
  • Explain

Opciones específicas de tabla y base de datos

  • Alter
  • describe
  • drop
  • insert
  • select
  • show
  • use

Iniciando Impala Shell

Abra la terminal de cloudera, inicie sesión como superusuario y escriba cloudera como contraseña como se muestra a continuación.

[[email protected] ~]$ su
Password: cloudera
[[email protected] cloudera]#

Inicie Impala shell escribiendo el siguiente comando:

[[email protected] cloudera] # impala-shell 
Starting Impala Shell without Kerberos authentication 
Connected to quickstart.cloudera:21000 
Server version: impalad version 2.3.0-cdh5.5.0 RELEASE 
(build 0c891d79aa38f297d244855a32f1e17280e2129b)
********************************************************************* 

Welcome to the Impala shell. Copyright (c) 2015 Cloudera, Inc. All rights reserved.
(Impala Shell v2.3.0-cdh5.5.0 (0c891d7) built on Mon Nov 9 12:18:12 PST 2015)

Want to know what version of Impala you're connected to? Run the VERSION command to 
find out! 
********************************************************************* 
[quickstart.cloudera:21000] >

Impala - Comandos de propósito general

Los comandos de propósito general de Impala se explican a continuación:

comando de ayuda

los help Command of Impala shell le da una lista de los comandos disponibles en Impala -

[quickstart.cloudera:21000] > help;
 
Documented commands (type help <topic>):
========================================================
compute  describe  insert  set     unset  with  version
connect  explain   quit    show    values use
exit     history   profile select  shell  tip 
  
Undocumented commands:
========================================= 
alter create desc drop help load summary

comando de versión

los version El comando le brinda la versión actual de Impala, como se muestra a continuación.

[quickstart.cloudera:21000] > version;
Shell version: Impala Shell v2.3.0-cdh5.5.0 (0c891d7) built on Mon Nov 9 
12:18:12 PST 2015

Server version: impalad version 2.3.0-cdh5.5.0 RELEASE (build 
0c891d79aa38f297d244855a32f1e17280e2129b)

comando de historia

los historyCommand of Impala muestra los últimos 10 comandos ejecutados en el shell. A continuación se muestra el ejemplo dehistorymando. Aquí hemos ejecutado 5 comandos, a saber, versión, ayuda, mostrar, uso e historial.

[quickstart.cloudera:21000] > history;
[1]:version;
[2]:help;
[3]:show databases;
[4]:use my_db;
[5]:history;

comando salir / salir

Puede salir del caparazón del Impala usando el quit o exit comando, como se muestra a continuación.

[quickstart.cloudera:21000] > exit; 
Goodbye cloudera

comando de conexión

los connectEl comando se usa para conectarse a una instancia determinada de Impala. En caso de que no especifique ninguna instancia, entonces se conecta al puerto predeterminado21000 Como se muestra abajo.

[quickstart.cloudera:21000] > connect; 
Connected to quickstart.cloudera:21000 
Server version: impalad version 2.3.0-cdh5.5.0 RELEASE (build 
0c891d79aa38f297d244855a32f1e17280e2129b)

Opciones específicas de consultas de Impala

Los comandos específicos de consulta de Impala aceptan una consulta. Se explican a continuación:

Explique

los explain comando devuelve el plan de ejecución para la consulta dada.

[quickstart.cloudera:21000] > explain select * from sample;
Query: explain select * from sample
+------------------------------------------------------------------------------------+ 
| Explain String                                                                     | 
+------------------------------------------------------------------------------------+ 
| Estimated Per-Host Requirements: Memory = 48.00MB VCores = 1                       | 
| WARNING: The following tables are missing relevant table and/or column statistics. |
| my_db.customers                                                                    | 
| 01:EXCHANGE [UNPARTITIONED]                                                        | 
| 00:SCAN HDFS [my_db.customers]                                                     | 
| partitions = 1/1 files = 6 size = 148B                                             | 
+------------------------------------------------------------------------------------+ 
Fetched 7 row(s) in 0.17s

Perfil

los profileEl comando muestra la información de bajo nivel sobre la consulta reciente. Este comando se utiliza para el diagnóstico y el ajuste del rendimiento de una consulta. A continuación se muestra el ejemplo deprofilemando. En este escenario, elprofile comando devuelve la información de bajo nivel de explain consulta.

[quickstart.cloudera:21000] > profile;

Query Runtime Profile: 
Query (id=164b1294a1049189:a67598a6699e3ab6): 

   Summary: 
      Session ID: e74927207cd752b5:65ca61e630ad3ad
      Session Type: BEESWAX 
      Start Time: 2016-04-17 23:49:26.08148000 End Time: 2016-04-17 23:49:26.2404000 
      Query Type: EXPLAIN 
      Query State: FINISHED 
      Query Status: OK 
      Impala Version: impalad version 2.3.0-cdh5.5.0 RELEASE (build 0c891d77280e2129b) 
      User: cloudera 
      Connected User: cloudera 
      Delegated User: 
      Network Address:10.0.2.15:43870 
      Default Db: my_db 
      Sql Statement: explain select * from sample 
      Coordinator: quickstart.cloudera:22000 
      : 0ns 
      Query Timeline: 167.304ms 
         - Start execution: 41.292us (41.292us) - Planning finished: 56.42ms (56.386ms) 
         - Rows available: 58.247ms (1.819ms) 
         - First row fetched: 160.72ms (101.824ms) 
         - Unregister query: 166.325ms (6.253ms)
         
   ImpalaServer: 
      - ClientFetchWaitTimer: 107.969ms 
      - RowMaterializationTimer: 0ns

Opciones específicas de tablas y bases de datos

La siguiente tabla enumera la tabla y las opciones específicas de datos en Impala.

No Señor Comando y explicación
1

Alter

los alter El comando se usa para cambiar la estructura y el nombre de una tabla en Impala.

2

Describe

los describeEl comando de Impala da los metadatos de una tabla. Contiene la información como columnas y sus tipos de datos. losdescribe el comando tiene desc como atajo.

3

Drop

los drop El comando se usa para eliminar una construcción de Impala, donde una construcción puede ser una tabla, una vista o una función de base de datos.

4

insert

los insert el comando de Impala está acostumbrado a,

  • Agregue datos (columnas) a una tabla.
  • Anula los datos de una tabla existente.
  • Anula los datos de una tabla existente.
5

select

los selectLa declaración se utiliza para realizar una operación deseada en un conjunto de datos en particular. Especifica el conjunto de datos sobre el que completar alguna acción. Puede imprimir o almacenar (en un archivo) el resultado de la instrucción de selección.

6

show

los show La declaración de Impala se utiliza para mostrar el almacén de metadatos de varias construcciones, como tablas, bases de datos y tablas.

7

use

los use La declaración de Impala se utiliza para cambiar el contexto actual a la base de datos deseada.

Tipos de datos de Impala

La siguiente tabla describe los tipos de datos de Impala.

No Señor Tipo de datos y descripción
1

BIGINT

Este tipo de datos almacena valores numéricos y el rango de este tipo de datos es -9223372036854775808 a 9223372036854775807. Este tipo de datos se utiliza en las declaraciones de creación de tabla y alteración de tabla.

2

BOOLEAN

Este tipo de datos almacena solo true o false valores y se utiliza en la definición de columna de la declaración de creación de tabla.

3

CHAR

Este tipo de datos es un almacenamiento de longitud fija, está relleno con espacios, puede almacenar hasta la longitud máxima de 255.

4

DECIMAL

Este tipo de datos se usa para almacenar valores decimales y se usa para crear tablas y modificar declaraciones de tablas.

5

DOUBLE

Este tipo de datos se utiliza para almacenar los valores de coma flotante en el rango de 4.94065645841246544e-324d positivo o negativo -1.79769313486231570e + 308.

6

FLOAT

Este tipo de datos se utiliza para almacenar tipos de datos de valores flotantes de precisión simple en el rango de 1.40129846432481707e-45 .. 3.40282346638528860e + 38.

7

INT

Este tipo de datos se utiliza para almacenar números enteros de 4 bytes hasta el rango de -2147483648 a 2147483647.

8

SMALLINT

Este tipo de datos se utiliza para almacenar números enteros de 2 bytes hasta el rango de -32768 a 32767.

9

STRING

Esto se usa para almacenar valores de cadena.

10

TIMESTAMP

Este tipo de datos se utiliza para representar un punto en el tiempo.

11

TINYINT

Este tipo de datos se utiliza para almacenar un valor entero de 1 byte hasta el rango de -128 a 127.

12

VARCHAR

Este tipo de datos se utiliza para almacenar caracteres de longitud variable hasta la longitud máxima 65.535.

13

ARRAY

Este es un tipo de datos complejo y se utiliza para almacenar un número variable de elementos ordenados.

14

Map

Este es un tipo de datos complejo y se utiliza para almacenar un número variable de pares clave-valor.

15

Struct

Este es un tipo de datos complejo y se utiliza para representar varios campos de un solo elemento.

Comentarios en Impala

Los comentarios en Impala son similares a los de SQL. En general, tenemos dos tipos de comentarios en los lenguajes de programación, a saber, comentarios de una línea y comentarios de varias líneas.

Single-line comments- Cada línea que va seguida de "-" se considera un comentario en Impala. A continuación se muestra un ejemplo de comentarios de una sola línea en Impala.

-- Hello welcome to tutorials point.

Multiline comments - Todas las líneas entre /* y */se consideran comentarios de varias líneas en Impala. A continuación se muestra un ejemplo de comentarios de varias líneas en Impala.

/*
Hi this is an example
Of multiline comments in Impala
*/

Los operadores de Impala son similares a los de SQL. Consulte nuestro tutorial de SQL haciendo clic en el siguiente enlaceoperadores-sql.

Impala: crear una base de datos

En Impala, una base de datos es una construcción que contiene tablas, vistas y funciones relacionadas dentro de sus espacios de nombres. Se representa como un árbol de directorios en HDFS; contiene particiones de tablas y archivos de datos. Este capítulo explica cómo crear una base de datos en Impala.

Declaración CREATE DATABASE

los CREATE DATABASE Statement se utiliza para crear una nueva base de datos en Impala.

Sintaxis

A continuación se muestra la sintaxis del CREATE DATABASE Declaración.

CREATE DATABASE IF NOT EXISTS database_name;

Aquí, IF NOT EXISTSes una cláusula opcional. Si usamos esta cláusula, se crea una base de datos con el nombre de pila, solo si no existe una base de datos con el mismo nombre.

Ejemplo

A continuación se muestra un ejemplo de create database statement. En este ejemplo, hemos creado una base de datos con el nombremy_database.

[quickstart.cloudera:21000] > CREATE DATABASE IF NOT EXISTS my_database;

Al ejecutar la consulta anterior en cloudera impala-shell, obtendrá el siguiente resultado.

Query: create DATABASE my_database 

Fetched 0 row(s) in 0.21s

Verificación

los SHOW DATABASES consulta da la lista de las bases de datos en Impala, por lo tanto, puede verificar si la base de datos se creó, utilizando el SHOWDeclaración DATABASES. Aquí puede observar la base de datos recién creadamy_db en la lista.

[quickstart.cloudera:21000] > show databases; 

Query: show databases
+-----------------------------------------------+
| name                                          | 
+-----------------------------------------------+ 
| _impala_builtins                              |
| default                                       | 
|  my_db                                        | 
+-----------------------------------------------+
Fetched 3 row(s) in 0.20s 
[quickstart.cloudera:21000] >

Ruta de Hdfs

Para crear una base de datos en el sistema de archivos HDFS, debe especificar la ubicación donde se creará la base de datos.

CREATE DATABASE IF NOT EXISTS database_name LOCATION hdfs_path;

Crear una base de datos usando el navegador Hue

Abra el editor de consultas Impala y escriba CREATE DATABASEdeclaración en él. A partir de entonces, haga clic en el botón ejecutar como se muestra en la siguiente captura de pantalla.

Después de ejecutar la consulta, mueva suavemente el cursor a la parte superior del menú desplegable y encontrará un símbolo de actualización. Si hace clic en el símbolo de actualización, la lista de bases de datos se actualizará y se le aplicarán los cambios recientes.

Verificación

Haga clic en el drop-down box bajo el encabezado DATABASEen el lado izquierdo del editor. Allí puede ver una lista de bases de datos en el sistema. Aquí puede observar la base de datos recién creadamy_db Como se muestra abajo.

Si observa con atención, puede ver solo una base de datos, es decir, my_db en la lista junto con la base de datos predeterminada.

los DROP DATABASE Statementde Impala se utiliza para eliminar una base de datos de Impala. Antes de eliminar la base de datos, se recomienda eliminar todas las tablas.

Sintaxis

A continuación se muestra la sintaxis de DROP DATABASE Declaración.

DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT | 
CASCADE] [LOCATION hdfs_path];

Aquí, IF EXISTSes una cláusula opcional. Si usamos esta cláusula cuando existe una base de datos con el nombre dado, se eliminará. Y si no existe una base de datos con el nombre de pila, no se realiza ninguna operación.

Ejemplo

A continuación se muestra un ejemplo de DROP DATABASEdeclaración. Suponga que tiene una base de datos en Impala con el nombresample_database.

Y, si verifica la lista de bases de datos utilizando el SHOW DATABASES declaración, observará el nombre en ella.

[quickstart.cloudera:21000] > SHOW DATABASES;

Query: show DATABASES
+-----------------------+ 
| name                  | 
+-----------------------+ 
| _impala_builtins      | 
| default               | 
| my_db                 | 
| sample_database       | 
+-----------------------+ 
Fetched 4 row(s) in 0.11s

Ahora, puede eliminar esta base de datos usando el DROP DATABASE Statement Como se muestra abajo.

< DROP DATABASE IF EXISTS sample_database;

Esto eliminará la base de datos especificada y le dará el siguiente resultado.

Query: drop DATABASE IF EXISTS sample_database;

Verificación

Puede verificar si la base de datos dada se elimina, utilizando el SHOW DATABASESdeclaración. Aquí puede observar que la base de datos denominadasample_database se elimina de la lista de bases de datos.

[quickstart.cloudera:21000] > SHOW DATABASES;

Query: show DATABASES 
+----------------------+ 
| name                 | 
+----------------------+ 
| _impala_builtins     | 
| default              | 
| my_db                | 
+----------------------+ 
Fetched 3 row(s) in 0.10s 
[quickstart.cloudera:21000] >

cascada

En general, para eliminar una base de datos, debe eliminar todas las tablas que contiene manualmente. Si usa cascada, Impala elimina las tablas dentro de la base de datos especificada antes de eliminarla.

Ejemplo

Supongamos que hay una base de datos en Impala llamada sample, y contiene dos tablas, a saber, student y test. Si intenta eliminar esta base de datos directamente, obtendrá un error como se muestra a continuación.

[quickstart.cloudera:21000] > DROP database sample;
Query: drop database sample 
ERROR: 
ImpalaRuntimeException: Error making 'dropDatabase' RPC to Hive Metastore: 
CAUSED BY: InvalidOperationException: Database sample is not empty. One or more 
tables exist.

Utilizando cascade, puede eliminar esta base de datos directamente (sin eliminar su contenido manualmente) como se muestra a continuación.

[quickstart.cloudera:21000] > DROP database sample cascade; 
Query: drop database sample cascade

Note - No puede eliminar el "current database”En Impala. Por lo tanto, antes de eliminar una base de datos, debe asegurarse de que el contexto actual esté configurado para la base de datos que no sea la que va a eliminar.

Eliminar una base de datos usando el navegador Hue

Abra el editor de consultas Impala y escriba DELETE DATABASEdeclaración en él y haga clic en el botón ejecutar como se muestra a continuación. Supongamos que hay tres bases de datos, a saber,my_db, my_databasey sample_databasejunto con la base de datos predeterminada. Aquí estamos eliminando la base de datos llamada my_database.

Después de ejecutar la consulta, mueva suavemente el cursor a la parte superior del menú desplegable. Luego, encontrará un símbolo de actualización como se muestra en la captura de pantalla que se muestra a continuación. Si hace clic en el símbolo de actualización, la lista de bases de datos se actualizará y se le aplicarán los cambios recientes realizados.

Verificación

Clickea en el drop down bajo el encabezado DATABASEen el lado izquierdo del editor. Allí, puede ver una lista de bases de datos en el sistema. Aquí puede observar la base de datos recién creadamy_db Como se muestra abajo.

Si observa con atención, puede ver solo una base de datos, es decir, my_db en la lista junto con la base de datos predeterminada.

Una vez que se conecte a Impala, es necesario que seleccione una de las bases de datos disponibles. losUSE DATABASE Statement de Impala se utiliza para cambiar la sesión actual a otra base de datos.

Sintaxis

A continuación se muestra la sintaxis de USE Declaración.

USE db_name;

Ejemplo

A continuación se muestra un ejemplo de USE statement. En primer lugar, creemos una base de datos con el nombresample_database Como se muestra abajo.

> CREATE DATABASE IF NOT EXISTS sample_database;

Esto creará una nueva base de datos y le dará el siguiente resultado.

Query: create DATABASE IF NOT EXISTS my_db2

Fetched 0 row(s) in 2.73s

Si verifica la lista de bases de datos utilizando el SHOW DATABASES declaración, puede observar el nombre de la base de datos recién creada en ella.

> SHOW DATABASES;

Query: show DATABASES 
+-----------------------+ 
| name                  | 
+-----------------------+ 
| _impala_builtins      | 
| default               | 
| my_db                 | 
| sample_database       | 
+-----------------------+ 
Fetched 4 row(s) in 0.11s

Ahora, cambiemos la sesión a la base de datos recién creada (sample_database) usando el USE Declaración como se muestra a continuación.

> USE sample_database;

Esto cambiará el contexto actual a sample_database y mostrará un mensaje como se muestra a continuación.

Query: use sample_database

Seleccionar una base de datos usando el navegador Hue

En el lado izquierdo del Query Editor de Impala, encontrará un menú desplegable como se muestra en la siguiente captura de pantalla.

Si hace clic en el menú desplegable, encontrará la lista de todas las bases de datos en Impala como se muestra a continuación.

Simplemente seleccione la base de datos a la que necesita cambiar el contexto actual.

los CREATE TABLELa declaración se usa para crear una nueva tabla en la base de datos requerida en Impala. Crear una tabla básica implica nombrar la tabla y definir sus columnas y el tipo de datos de cada columna.

Sintaxis

A continuación se muestra la sintaxis del CREATE TABLEDeclaración. Aquí,IF NOT EXISTSes una cláusula opcional. Si usamos esta cláusula, se crea una tabla con el nombre dado, solo si no hay una tabla existente en la base de datos especificada con el mismo nombre.

create table IF NOT EXISTS database_name.table_name (
   column1 data_type,
   column2 data_type,
   column3 data_type,
   ………
   columnN data_type
);

CREAR TABLA es la palabra clave que indica al sistema de base de datos que cree una nueva tabla. El nombre o identificador exclusivo de la tabla sigue a la instrucción CREATE TABLE. Opcionalmente puede especificardatabase_name junto con table_name.

Ejemplo

A continuación se muestra un ejemplo de la declaración de creación de tabla. En este ejemplo, hemos creado una tabla llamadastudent en la base de datos my_db.

[quickstart.cloudera:21000] > CREATE TABLE IF NOT EXISTS my_db.student
   (name STRING, age INT, contact INT );

Al ejecutar la declaración anterior, se creará una tabla con el nombre especificado, mostrando el siguiente resultado.

Query: create table student (name STRING, age INT, phone INT) 

Fetched 0 row(s) in 0.48s

Verificación

los show Tablesconsulta proporciona una lista de tablas en la base de datos actual en Impala. Por lo tanto, puede verificar si la tabla está creada, usando elShow Tables declaración.

En primer lugar, debe cambiar el contexto a la base de datos en la que existe la tabla requerida, como se muestra a continuación.

[quickstart.cloudera:21000] > use my_db; 
Query: use my_db

Entonces, si obtiene la lista de tablas usando el show tables consulta, puede observar la tabla llamada student en él como se muestra a continuación.

[quickstart.cloudera:21000] > show tables;

Query: show tables 
+-----------+ 
| name      | 
+-----------+ 
| student   | 
+-----------+ 
Fetched 1 row(s) in 0.10s

Ruta HDFS

Para crear una base de datos en el sistema de archivos HDFS, debe especificar la ubicación donde se creará la base de datos como se muestra a continuación.

CREATE DATABASE IF NOT EXISTS database_name LOCATION hdfs_path;

Crear una base de datos usando el navegador Hue

Abra el editor de consultas impala y escriba CREATE TableDeclaración en él. Y haga clic en el botón ejecutar como se muestra en la siguiente captura de pantalla.

Después de ejecutar la consulta, mueva suavemente el cursor a la parte superior del menú desplegable y encontrará un símbolo de actualización. Si hace clic en el símbolo de actualización, la lista de bases de datos se actualizará y se le aplicarán los cambios recientes realizados.

Verificación

Clickea en el drop down bajo el encabezado DATABASEen el lado izquierdo del editor. Allí puede ver una lista de bases de datos. Seleccione la base de datosmy_db Como se muestra abajo.

Al seleccionar la base de datos my_dbpuede ver una lista de tablas como se muestra a continuación. Aquí puede encontrar la tabla recién creadastudent Como se muestra abajo.

los INSERT La declaración de Impala tiene dos cláusulas: into y overwrite. Insertar declaración coninto La cláusula se usa para agregar nuevos registros a una tabla existente en una base de datos.

Sintaxis

Hay dos sintaxis básicas de INSERT declaración de la siguiente manera:

insert into table_name (column1, column2, column3,...columnN)

values (value1, value2, value3,...valueN);

Aquí, column1, column2, ... columnN son los nombres de las columnas de la tabla en la que desea insertar datos.

También puede agregar valores sin especificar los nombres de las columnas pero, para eso, debe asegurarse de que el orden de los valores esté en el mismo orden que las columnas de la tabla como se muestra a continuación.

Insert into table_name values (value1, value2, value2);

CREAR TABLA es la palabra clave que le dice al sistema de base de datos que cree una nueva tabla. El nombre o identificador exclusivo de la tabla sigue a la instrucción CREATE TABLE. Opcionalmente puede especificardatabase_name junto con table_name.

Ejemplo

Supongamos que hemos creado una tabla llamada student en Impala como se muestra a continuación.

create table employee (Id INT, name STRING, age INT,address STRING, salary BIGINT);

A continuación se muestra un ejemplo de cómo crear un registro en la tabla denominada employee.

[quickstart.cloudera:21000] > insert into employee 
(ID,NAME,AGE,ADDRESS,SALARY)VALUES (1, 'Ramesh', 32, 'Ahmedabad', 20000 );

Al ejecutar la declaración anterior, se inserta un registro en la tabla denominada employee mostrando el siguiente mensaje.

Query: insert into employee (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Ramesh',
   32, 'Ahmedabad', 20000 ) 
Inserted 1 row(s) in 1.32s

Puede insertar otro registro sin especificar los nombres de las columnas como se muestra a continuación.

[quickstart.cloudera:21000] > insert into employee values (2, 'Khilan', 25, 
   'Delhi', 15000 );

Al ejecutar la declaración anterior, se inserta un registro en la tabla denominada employee mostrando el siguiente mensaje.

Query: insert into employee values (2, 'Khilan', 25, 'Delhi', 15000 ) 
Inserted 1 row(s) in 0.31s

Puede insertar algunos registros más en la tabla de empleados como se muestra a continuación.

Insert into employee values (3, 'kaushik', 23, 'Kota', 30000 );

Insert into employee values (4, 'Chaitali', 25, 'Mumbai', 35000 );

Insert into employee values (5, 'Hardik', 27, 'Bhopal', 40000 );

Insert into employee values (6, 'Komal', 22, 'MP', 32000 );

Después de insertar los valores, el employee La tabla en Impala será como se muestra a continuación.

+----+----------+-----+-----------+--------+
| id | name     | age | address   | salary |
+----+----------+-----+-----------+--------+
| 1  | Ramesh   | 32  | Ahmedabad | 20000  |
| 2  | Khilan   | 25  | Delhi     | 15000  |
| 5  | Hardik   | 27  | Bhopal    | 40000  |
| 4  | Chaitali | 25  | Mumbai    | 35000  |
| 3  | kaushik  | 23  | Kota      | 30000  |
| 6  | Komal    | 22  | MP        | 32000  |
+----+----------+-----+-----------+--------+

Sobrescribir los datos en una tabla

Podemos sobrescribir los registros de una tabla usando la cláusula de sobrescritura. Los registros sobrescritos se eliminarán permanentemente de la tabla. A continuación se muestra la sintaxis del uso de la cláusula de sobrescritura.

Insert overwrite table_name values (value1, value2, value2);

Ejemplo

A continuación se muestra un ejemplo del uso de la cláusula overwrite.

[quickstart.cloudera:21000] > Insert overwrite employee values (1, 'Ram', 26, 
   'Vishakhapatnam', 37000 );

Al ejecutar la consulta anterior, esto sobrescribirá los datos de la tabla con el registro especificado mostrando el siguiente mensaje.

Query: insert overwrite employee values (1, 'Ram', 26, 'Vishakhapatnam', 37000 ) 
Inserted 1 row(s) in 0.31s

Al verificar la tabla, se puede observar que todos los registros de la tabla employee se sobrescriben con nuevos registros como se muestra a continuación.

+----+------+-----+---------------+--------+
| id | name | age | address       | salary |
+----+------+-----+---------------+--------+
| 1  | Ram  | 26  | Vishakhapatnam| 37000  |
+----+------+-----+---------------+--------+

Insertar datos usando el navegador Hue

Abra el editor de consultas Impala y escriba insertDeclaración en él. Y haga clic en el botón ejecutar como se muestra en la siguiente captura de pantalla.

Después de ejecutar la consulta / declaración, este registro se agrega a la tabla.

Impala SELECTLa declaración se utiliza para obtener los datos de una o más tablas en una base de datos. Esta consulta devuelve datos en forma de tablas.

Sintaxis

A continuación se muestra la sintaxis del Impala select declaración.

SELECT column1, column2, columnN from table_name;

Aquí, column1, column2 ... son los campos de una tabla cuyos valores desea obtener. Si desea obtener todos los campos disponibles en el campo, puede usar la siguiente sintaxis:

SELECT * FROM table_name;

Ejemplo

Supongamos que tenemos una tabla llamada customers en Impala, con los siguientes datos:

ID    NAME       AGE    ADDRESS      SALARY
---   -------    ---    ----------   -------
1     Ramesh     32     Ahmedabad    20000
2     Khilan     25     Delhi        15000
3     Hardik     27     Bhopal       40000
4     Chaitali   25     Mumbai       35000
5     kaushik    23     Kota         30000
6     Komal      22     Mp           32000

Puedes buscar el id, namey age de todos los registros de la customers mesa usando select declaración como se muestra a continuación -

[quickstart.cloudera:21000] > select id, name, age from customers;

Al ejecutar la consulta anterior, Impala obtiene la identificación, el nombre y la antigüedad de todos los registros de la tabla especificada y los muestra como se muestra a continuación.

Query: select id,name,age from customers

+----+----------+-----+
| id | name     | age |
| 1  | Ramesh   | 32  |
| 2  | Khilan   | 25  |
| 3  | Hardik   | 27  |
| 4  | Chaitali | 25  |
| 5  | kaushik  | 23  |
| 6  | Komal    | 22  |
+----+----------+-----+

Fetched 6 row(s) in 0.66s

También puedes buscar all los registros de la customers tabla usando el select consulta como se muestra a continuación.

[quickstart.cloudera:21000] > select name, age from customers; 
Query: select * from customers

Al ejecutar la consulta anterior, Impala recupera y muestra todos los registros de la tabla especificada como se muestra a continuación.

+----+----------+-----+-----------+--------+
| id | name     | age | address   | salary |
+----+----------+-----+-----------+--------+
| 1  | Ramesh   | 32  | Ahmedabad | 20000  |
| 2  | Khilan   | 25  | Delhi     | 15000  |
| 3  | Hardik   | 27  | Bhopal    | 40000  |
| 4  | Chaitali | 25  | Mumbai    | 35000  |
| 5  | kaushik  | 23  | Kota      | 30000  |
| 6  | Komal    | 22  | MP        | 32000  |
+----+----------+-----+-----------+--------+

Fetched 6 row(s) in 0.66s

Obteniendo los registros usando Hue

Abra el editor de consultas Impala y escriba selectDeclaración en él. Y haga clic en el botón ejecutar como se muestra en la siguiente captura de pantalla.

Después de ejecutar la consulta, si se desplaza hacia abajo y selecciona el Results pestaña, puede ver la lista de los registros de la tabla especificada como se muestra a continuación.

los describeLa declaración en Impala se usa para dar la descripción de la tabla. El resultado de esta declaración contiene la información sobre una tabla, como los nombres de las columnas y sus tipos de datos.

Sintaxis

A continuación se muestra la sintaxis del Impala describe declaración.

Describe table_name;

Ejemplo

Por ejemplo, supongamos que tenemos una tabla llamada customer en Impala, con los siguientes datos:

ID    NAME     AGE    ADDRESS     SALARY
--- --------- ----- ----------- -----------
1   Ramesh     32    Ahmedabad    20000
2   Khilan     25    Delhi        15000
3   Hardik     27    Bhopal       40000
4   Chaitali   25    Mumbai       35000
5   kaushik    23    Kota         30000
6   Komal      22    Mp           32000

Puede obtener la descripción del customer tabla usando el describe declaración como se muestra a continuación -

[quickstart.cloudera:21000] > describe customer;

Al ejecutar la consulta anterior, Impala recupera el metadata de la tabla especificada y la muestra como se muestra a continuación.

Query: describe customer
 
+---------+--------+---------+ 
| name    | type   | comment | 
+---------+--------+---------+ 
| id      | int    |         |                    
| name    | string |         | 
| age     | int    |         | 
| address | string |         | 
| salary  | bigint |         |
+---------+--------+---------+ 

Fetched 5 row(s) in 0.51s

Describiendo los registros usando Hue

Abra el editor de consultas Impala y escriba describe declaración en él y haga clic en el botón ejecutar como se muestra en la siguiente captura de pantalla.

Después de ejecutar la consulta, si se desplaza hacia abajo y selecciona el Results pestaña, puede ver los metadatos de la tabla como se muestra a continuación.

La instrucción Alter table en Impala se utiliza para realizar cambios en una tabla determinada. Usando esta declaración, podemos agregar, eliminar o modificar columnas en una tabla existente y también podemos cambiarle el nombre.

Este capítulo explica varios tipos de declaraciones alter con sintaxis y ejemplos. En primer lugar, suponga que tenemos una tabla llamadacustomers en el my_db base de datos en Impala, con los siguientes datos

ID   NAME     AGE   ADDRESS    SALARY
--- --------- ----- ----------- --------
1   Ramesh    32    Ahmedabad   20000
2   Khilan    25    Delhi       15000
3   Hardik    27    Bhopal      40000
4   Chaitali  25    Mumbai      35000
5   kaushik   23    Kota        30000
6   Komal     22    Mp          32000

Y, si obtiene la lista de tablas en la base de datos my_db, puedes encontrar el customers tabla en ella como se muestra a continuación.

[quickstart.cloudera:21000] > show tables;

Query: show tables 
+-----------+ 
| name      | 
+-----------+ 
| customers | 
| employee  | 
| student   | 
| student1  | 
+-----------+

Alterando el nombre de una mesa

Sintaxis

La sintaxis básica de ALTER TABLE para cambiar el nombre de una tabla existente es el siguiente:

ALTER TABLE [old_db_name.]old_table_name RENAME TO [new_db_name.]new_table_name

Ejemplo

A continuación, se muestra un ejemplo de cómo cambiar el nombre de la tabla mediante el alterdeclaración. Aquí estamos cambiando el nombre de la mesa.customers a los usuarios.

[quickstart.cloudera:21000] > ALTER TABLE my_db.customers RENAME TO my_db.users;

Después de ejecutar la consulta anterior, Impala cambia el nombre de la tabla según sea necesario, mostrando el siguiente mensaje.

Query: alter TABLE my_db.customers RENAME TO my_db.users

Puede verificar la lista de tablas en la base de datos actual usando el show tablesdeclaración. Puedes encontrar la tabla llamadausers en vez de customers.

Query: show tables 
+----------+ 
| name     | 
+----------+ 
| employee | 
| student  | 
| student1 | 
| users    | 
+----------+ 
Fetched 4 row(s) in 0.10s

Agregar columnas a una tabla

Sintaxis

La sintaxis básica de ALTER TABLE para agregar columnas a una tabla existente es la siguiente:

ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...])

Ejemplo

La siguiente consulta es un ejemplo que demuestra cómo agregar columnas a una tabla existente. Aquí estamos agregando dos columnas account_no y phone_number (ambas son del tipo de datos bigint) alusers mesa.

[quickstart.cloudera:21000] > ALTER TABLE users ADD COLUMNS (account_no BIGINT, 
phone_no BIGINT);

Al ejecutar la consulta anterior, agregará las columnas especificadas a la tabla llamada student, mostrando el siguiente mensaje.

Query: alter TABLE users ADD COLUMNS (account_no BIGINT, phone_no BIGINT)

Si verifica el esquema de la tabla users, puede encontrar las columnas recién agregadas como se muestra a continuación.

quickstart.cloudera:21000] > describe users;
 
Query: describe users 
+------------+--------+---------+ 
| name       | type   | comment | 
+------------+--------+---------+ 
| id         | int    |         | 
| name       | string |         | 
| age        | int    |         |
| address    | string |         | 
| salary     | bigint |         | 
| account_no | bigint |         | 
| phone_no   | bigint |         | 
+------------+--------+---------+ 
Fetched 7 row(s) in 0.20s

Quitar columnas de una tabla

Sintaxis

La sintaxis básica de ALTER TABLE para DROP COLUMN en una tabla existente es la siguiente:

ALTER TABLE name DROP [COLUMN] column_name

Ejemplo

La siguiente consulta es un ejemplo de cómo eliminar columnas de una tabla existente. Aquí estamos eliminando la columna llamadaaccount_no.

[quickstart.cloudera:21000] > ALTER TABLE users DROP account_no;

Al ejecutar la consulta anterior, Impala elimina la columna denominada account_no mostrando el siguiente mensaje.

Query: alter TABLE users DROP account_no

Si verifica el esquema de la tabla users, no puede encontrar la columna llamada account_no desde que fue eliminado.

[quickstart.cloudera:21000] > describe users; 

Query: describe users 
+----------+--------+---------+ 
| name     | type   | comment | 
+----------+--------+---------+ 
| id       | int    |         | 
| name     | string |         | 
| age      | int    |         | 
| address  | string |         | 
| salary   | bigint |         | 
| phone_no | bigint |         |
+----------+--------+---------+ 
Fetched 6 row(s) in 0.11s

Cambiar el nombre y el tipo de una columna

Sintaxis

La sintaxis básica de ALTER TABLE para change the name and datatype de una columna en una tabla existente es la siguiente:

ALTER TABLE name CHANGE column_name new_name new_type

Ejemplo

A continuación se muestra un ejemplo de cómo cambiar el nombre y el tipo de datos de una columna mediante la instrucción alter. Aquí estamos cambiando el nombre de la columna.phone_no to email y su tipo de datos para string.

[quickstart.cloudera:21000] > ALTER TABLE users CHANGE phone_no e_mail string;

Al ejecutar la consulta anterior, Impala realiza los cambios especificados y muestra el siguiente mensaje.

Query: alter TABLE users CHANGE phone_no e_mail string

Puede verificar los metadatos de los usuarios de la tabla utilizando el describedeclaración. Puede observar que Impala ha realizado los cambios necesarios en la columna especificada.

[quickstart.cloudera:21000] > describe users; 
Query: describe users 
+----------+--------+---------+ 
| name     | type   | comment | 
+----------+--------+---------+ 
| id       | int    |         | 
| name     | string |         | 
| age      | int    |         | 
| address  | string |         | 
| salary   | bigint |         | 
| phone_no | bigint |         |
+----------+--------+---------+ 
Fetched 6 row(s) in 0.11s

Modificar una tabla usando Hue

Abra el editor de consultas Impala y escriba el alter declaración en él y haga clic en el botón ejecutar como se muestra en la siguiente captura de pantalla.

Al ejecutar la consulta anterior, cambiará el nombre de la tabla customers a users. De la misma forma, podemos ejecutar todos losalter consultas.

El impala drop tableLa declaración se utiliza para eliminar una tabla existente en Impala. Esta declaración también elimina los archivos HDFS subyacentes para tablas internas

NOTE - Debe tener cuidado al usar este comando porque una vez que se elimina una tabla, toda la información disponible en la tabla también se perderá para siempre.

Sintaxis

A continuación se muestra la sintaxis del DROP TABLEDeclaración. Aquí,IF EXISTSes una cláusula opcional. Si usamos esta cláusula, se borra una tabla con el nombre dado, solo si existe. De lo contrario, no se realizará ninguna operación.

DROP table database_name.table_name;

Si intenta eliminar una tabla que no existe sin la cláusula IF EXISTS, se generará un error. Opcionalmente puede especificardatabase_name junto con table_name.

Ejemplo

Primero verifiquemos la lista de tablas en la base de datos. my_db Como se muestra abajo.

[quickstart.cloudera:21000] > show tables;

Query: show tables 
+------------+ 
| name       | 
+------------+ 
| customers  | 
| employee   | 
| student    | 
+------------+ 
Fetched 3 row(s) in 0.11s

En el resultado anterior, puede observar que la base de datos my_db contiene 3 tablas

A continuación se muestra un ejemplo de drop table statement. En este ejemplo, estamos eliminando la tabla llamadastudent de la base de datos my_db.

[quickstart.cloudera:21000] > drop table if exists my_db.student;

Al ejecutar la consulta anterior, se eliminará una tabla con el nombre especificado, mostrando el siguiente resultado.

Query: drop table if exists student

Verificación

los show Tablesconsulta da una lista de las tablas en la base de datos actual en Impala. Por lo tanto, puede verificar si se elimina una tabla, utilizando elShow Tables declaración.

En primer lugar, debe cambiar el contexto a la base de datos en la que existe la tabla requerida, como se muestra a continuación.

[quickstart.cloudera:21000] > use my_db; 
Query: use my_db

Entonces, si obtiene la lista de tablas usando el show tables consulta, puede observar la tabla llamada student no está en la lista.

[quickstart.cloudera:21000] > show tables; 

Query: show tables 
+-----------+ 
| name      | 
+-----------+ 
| customers | 
| employee  | 
| student   | 
+-----------+ 
Fetched 3 row(s) in 0.11s

Crear una base de datos usando el navegador Hue

Abra el editor de consultas Impala y escriba drop TableDeclaración en él. Y haga clic en el botón ejecutar como se muestra en la siguiente captura de pantalla.

Después de ejecutar la consulta, mueva suavemente el cursor a la parte superior del menú desplegable y encontrará un símbolo de actualización. Si hace clic en el símbolo de actualización, la lista de bases de datos se actualizará y se le aplicarán los cambios recientes realizados.

Verificación

Clickea en el drop down bajo el encabezado DATABASEen el lado izquierdo del editor. Allí puede ver una lista de bases de datos; seleccionar la base de datosmy_db Como se muestra abajo.

Al seleccionar la base de datos my_db, puede ver una lista de tablas como se muestra a continuación. Aquí no puede encontrar la tabla eliminadastudent en la lista como se muestra a continuación.

los Truncate Table La declaración de Impala se utiliza para eliminar todos los registros de una tabla existente.

También puede usar el comando DROP TABLE para eliminar una tabla completa, pero eliminaría la estructura de la tabla completa de la base de datos y necesitaría volver a crear esta tabla una vez más si desea almacenar algunos datos.

Sintaxis

A continuación se muestra la sintaxis de la declaración de tabla truncada.

truncate table_name;

Ejemplo

Supongamos que tenemos una tabla llamada customersen Impala, y si verifica su contenido, obtendrá el siguiente resultado. Esto significa que la tabla de clientes contiene 6 registros.

[quickstart.cloudera:21000] > select * from customers; 

Query: select * from customers 
+----+----------+-----+-----------+--------+--------+ 
| id | name     | age | address   | salary | e_mail | 
+----+----------+-----+-----------+--------+--------+
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | NULL   | 
| 2  | Khilan   | 25  | Delhi     | 15000  | NULL   | 
| 3  | kaushik  | 23  | Kota      | 30000  | NULL   |
| 4  | Chaitali | 25  | Mumbai    | 35000  | NULL   | 
| 5  | Hardik   | 27  | Bhopal    | 40000  | NULL   | 
| 6  | Komal    | 22  | MP        | 32000  | NULL   | 
+----+----------+-----+-----------+--------+--------+

A continuación se muestra un ejemplo de cómo truncar una tabla en Impala usando truncate statement. Aquí estamos eliminando todos los registros de la tabla llamadacustomers.

[quickstart.cloudera:21000] > truncate customers;

Al ejecutar la declaración anterior, Impala borra todos los registros de la tabla especificada, mostrando el siguiente mensaje.

Query: truncate customers 

Fetched 0 row(s) in 0.37s

Verificación

Si verifica el contenido de la tabla de clientes, después de la operación de eliminación, utilizando select declaración, obtendrá una fila vacía como se muestra a continuación.

[quickstart.cloudera:21000] > select * from customers;
Query: select * from customers 

Fetched 0 row(s) in 0.12s

Truncar una tabla usando el navegador Hue

Abra el editor de consultas Impala y escriba truncateDeclaración en él. Y haga clic en el botón ejecutar como se muestra en la siguiente captura de pantalla.

Después de ejecutar la consulta / declaración, se eliminan todos los registros de la tabla.

los show tables La declaración en Impala se usa para obtener la lista de todas las tablas existentes en la base de datos actual.

Ejemplo

A continuación se muestra un ejemplo de show tablesdeclaración. Si desea obtener la lista de tablas en una base de datos en particular, antes que nada, cambie el contexto a la base de datos requerida y obtenga la lista de tablas usandoshow tables declaración como se muestra a continuación.

[quickstart.cloudera:21000] > use my_db; 
Query: use my_db
[quickstart.cloudera:21000] > show tables;

Al ejecutar la consulta anterior, Impala obtiene la lista de todas las tablas en la base de datos especificada y la muestra como se muestra a continuación.

Query: show tables 
+-----------+ 
| name      | 
+-----------+ 
| customers | 
| employee  | 
+-----------+ 
Fetched 2 row(s) in 0.10s

Listado de tablas usando Hue

Abra el editor de consultas impala, seleccione el contexto como my_db y escriba el show tables declaración en él y haga clic en el botón ejecutar como se muestra en la siguiente captura de pantalla.

Después de ejecutar la consulta, si se desplaza hacia abajo y selecciona el Results pestaña, puede ver la lista de las tablas como se muestra a continuación.

Una vista no es más que una declaración del lenguaje de consulta de Impala que se almacena en la base de datos con un nombre asociado. Es una composición de una tabla en forma de consulta SQL predefinida.

Una vista puede contener todas las filas de una tabla o las seleccionadas. Se puede crear una vista a partir de una o varias tablas. Las vistas permiten a los usuarios:

  • Estructurar los datos de una manera que los usuarios o clases de usuarios encuentren natural o intuitiva.

  • Restrinja el acceso a los datos de modo que un usuario pueda ver y (a veces) modificar exactamente lo que necesita y nada más.

  • Resuma datos de varias tablas que se pueden utilizar para generar informes.

Puede crear una vista usando el Create View declaración de Impala.

Sintaxis

A continuación se muestra la sintaxis de la declaración de creación de vista. IF NOT EXISTSes una cláusula opcional. Si usamos esta cláusula, se crea una tabla con el nombre dado, solo si no hay una tabla existente en la base de datos especificada con el mismo nombre.

Create View IF NOT EXISTS view_name as Select statement

Ejemplo

Por ejemplo, supongamos que tenemos una tabla llamada customers en el my_db base de datos en Impala, con los siguientes datos.

ID  NAME      AGE   ADDRESS     SALARY
--- --------- ----- ----------- --------
1   Ramesh    32    Ahmedabad   20000
2   Khilan    25    Delhi       15000
3   Hardik    27    Bhopal      40000
4   Chaitali  25    Mumbai      35000
5   kaushik   23    Kota        30000
6   Komal     22    MP          32000

A continuación se muestra un ejemplo de Create View Statement. En este ejemplo, estamos creando una vista comocustomers tabla que contiene las columnas, el nombre y la edad.

[quickstart.cloudera:21000] > CREATE VIEW IF NOT EXISTS customers_view AS 
select name, age from customers;

Al ejecutar la consulta anterior, se crea una vista con las columnas deseadas, mostrando el siguiente mensaje.

Query: create VIEW IF NOT EXISTS sample AS select * from customers 
Fetched 0 row(s) in 0.33s

Verificación

Puede verificar el contenido de la vista que acaba de crear, utilizando el select declaración como se muestra a continuación.

[quickstart.cloudera:21000] > select * from customers_view;

Esto producirá el siguiente resultado.

Query: select * from customers_view 
+----------+-----+ 
| name     | age | 
+----------+-----+ 
| Komal    | 22  | 
| Khilan   | 25  | 
| Ramesh   | 32  | 
| Hardik   | 27  | 
| Chaitali | 25  | 
| kaushik  | 23  | 
+----------+-----+ 
Fetched 6 row(s) in 4.80s

Creando una vista usando Hue

Abra el editor de consultas Impala, seleccione el contexto como my_dby escriba el Create View declaración en él y haga clic en el botón ejecutar como se muestra en la siguiente captura de pantalla.

Después de ejecutar la consulta, si se desplaza hacia abajo, puede ver la view llamado sample creado en la lista de tablas como se muestra a continuación.

los Alter ViewLa declaración de Impala se utiliza para cambiar una vista. Con esta declaración, puede cambiar el nombre de una vista, cambiar la base de datos y la consulta asociada a ella.

Desde un view es una construcción lógica, ningún dato físico se verá afectado por el alter view consulta.

Sintaxis

A continuación se muestra la sintaxis del Alter View declaración

ALTER VIEW database_name.view_name as Select statement

Ejemplo

Por ejemplo, supongamos que tenemos una vista llamada customers_view en el my_db base de datos en Impala con el siguiente contenido.

+----------+-----+ 
| name     | age | 
+----------+-----+ 
| Komal    | 22  | 
| Khilan   | 25  | 
| Ramesh   | 32  | 
| Hardik   | 27  | 
| Chaitali | 25  | 
| kaushik  | 23  | 
+----------+-----+

A continuación se muestra un ejemplo de Alter View Statement. En este ejemplo, incluimos las columnas id, nombre y salario en lugar de nombre y edad en elcustomers_view.

[quickstart.cloudera:21000] > Alter view customers_view as select id, name, 
salary from customers;

Al ejecutar la consulta anterior, Impala realiza los cambios especificados en el customers_view, mostrando el siguiente mensaje.

Query: alter view customers_view as select id, name, salary from customers

Verificación

Puede verificar el contenido del view llamado customers_view, utilizando el select declaración como se muestra a continuación.

[quickstart.cloudera:21000] > select * from customers_view;
Query: select * from customers_view

Esto producirá el siguiente resultado.

+----+----------+--------+ 
| id | name     | salary | 
+----+----------+--------+
| 3  | kaushik  | 30000  | 
| 2  | Khilan   | 15000  | 
| 5  | Hardik   | 40000  | 
| 6  | Komal    | 32000  | 
| 1  | Ramesh   | 20000  | 
| 4  | Chaitali | 35000  | 
+----+----------+--------+ 
Fetched 6 row(s) in 0.69s

Modificar una vista usando Hue

Abra el editor de consultas Impala, seleccione el contexto como my_dby escriba el Alter View declaración en él y haga clic en el botón ejecutar como se muestra en la siguiente captura de pantalla.

Después de ejecutar la consulta, el view llamado sample se modificará en consecuencia.

los Drop ViewLa consulta de Impala se utiliza para eliminar una vista existente. Desde unview es una construcción lógica, ningún dato físico se verá afectado por el drop view consulta.

Sintaxis

A continuación se muestra la sintaxis de la declaración de vista desplegable.

DROP VIEW database_name.view_name;

Ejemplo

Por ejemplo, supongamos que tenemos una vista llamada customers_view en el my_db base de datos en Impala con el siguiente contenido.

+----------+-----+ 
| name     | age | 
+----------+-----+ 
| Komal    | 22  | 
| Khilan   | 25  | 
| Ramesh   | 32  | 
| Hardik   | 27  | 
| Chaitali | 25  | 
| kaushik  | 23  | 
+----------+-----+

A continuación se muestra un ejemplo de Drop View Statement. En este ejemplo, estamos intentando eliminar elview llamado customers_view utilizando el drop view consulta.

[quickstart.cloudera:21000] > Drop view customers_view;

Al ejecutar la consulta anterior, Impala elimina la vista especificada y muestra el siguiente mensaje.

Query: drop view customers_view

Verificación

Si verifica la lista de tablas usando show tables declaración, puede observar que el view llamado customers_view esta borrado.

[quickstart.cloudera:21000] > show tables;

Esto producirá el siguiente resultado.

Query: show tables 
+-----------+ 
| name      | 
+-----------+ 
| customers | 
| employee  | 
| sample    | 
+-----------+ 
Fetched 3 row(s) in 0.10s

Dejar caer una vista usando Hue

Abra el editor de consultas Impala, seleccione el contexto como my_dby escriba el Drop view declaración en él y haga clic en el botón ejecutar como se muestra en la siguiente captura de pantalla.

Después de ejecutar la consulta, si se desplaza hacia abajo, puede ver una lista llamada TABLES. Esta lista contiene todos lostables y viewsen la base de datos actual. En esta lista, puede encontrar que el especificadoview fué borrado.

El impala ORDER BYLa cláusula se utiliza para ordenar los datos en orden ascendente o descendente, según una o más columnas. Algunas bases de datos clasifican los resultados de la consulta en orden ascendente de forma predeterminada.

Sintaxis

A continuación se muestra la sintaxis de la cláusula ORDER BY.

select * from table_name ORDER BY col_name [ASC|DESC] [NULLS FIRST|NULLS LAST]

Puede organizar los datos en la tabla en orden ascendente o descendente utilizando las palabras clave ASC o DESC respectivamente.

De la misma manera, si usamos NULLS FIRST, todos los valores nulos de la tabla se ordenan en las filas superiores; y si usamos NULLS LAST, las filas que contienen valores nulos se ordenarán al final.

Ejemplo

Supongamos que tenemos una tabla llamada customers en la base de datos my_db y su contenido es el siguiente:

[quickstart.cloudera:21000] > select * from customers;
Query: select * from customers 
+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 3  | kaushik  | 23  | Kota      | 30000  | 
| 1  | Ramesh   |  32 | Ahmedabad | 20000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  | 
| 6  | Komal    | 22  | MP        | 32000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
| 5  | Hardik   | 27  | Bhopal    | 40000  | 
+----+----------+-----+-----------+--------+ 
Fetched 6 row(s) in 0.51s

A continuación se muestra un ejemplo de cómo organizar los datos en el customers tabla, en orden ascendente de su id’s utilizando el order by cláusula.

[quickstart.cloudera:21000] > Select * from customers ORDER BY id asc;

Al ejecutarse, la consulta anterior produce el siguiente resultado.

Query: select * from customers ORDER BY id asc 
+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  | 
| 3  | kaushik  | 23  | Kota      | 30000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
| 5  | Hardik   | 27  | Bhopal    | 40000  | 
| 6  | Komal    | 22  | MP        | 32000  | 
+----+----------+-----+-----------+--------+ 
Fetched 6 row(s) in 0.56s

Del mismo modo, puede ordenar los datos de customers tabla en orden descendente utilizando el order by cláusula como se muestra a continuación.

[quickstart.cloudera:21000] > Select * from customers ORDER BY id desc;

Al ejecutarse, la consulta anterior produce el siguiente resultado.

Query: select * from customers ORDER BY id desc 
+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 6  | Komal    | 22  | MP        | 32000  | 
| 5  | Hardik   | 27  | Bhopal    | 40000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
| 3  | kaushik  | 23  | Kota      | 30000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  |
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | 
+----+----------+-----+-----------+--------+ 
Fetched 6 row(s) in 0.54s

El impala GROUP BY La cláusula se usa en colaboración con la instrucción SELECT para organizar datos idénticos en grupos.

Sintaxis

A continuación se muestra la sintaxis de la cláusula GROUP BY.

select data from table_name Group BY col_name;

Ejemplo

Supongamos que tenemos una tabla llamada customers en la base de datos my_db y su contenido es el siguiente:

[quickstart.cloudera:21000] > select * from customers; 
Query: select * from customers 
+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  | 
| 3  | kaushik  | 23  | Kota      | 30000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
| 5  | Hardik   | 27  | Bhopal    | 40000  | 
| 6  | Komal    | 22  | MP        | 32000  | 
+----+----------+-----+-----------+--------+ 
Fetched 6 row(s) in 0.51s

Puede obtener el monto total del salario de cada cliente utilizando la consulta GRUPO POR como se muestra a continuación.

[quickstart.cloudera:21000] > Select name, sum(salary) from customers Group BY name;

Al ejecutarse, la consulta anterior da el siguiente resultado.

Query: select name, sum(salary) from customers Group BY name 
+----------+-------------+ 
| name     | sum(salary) | 
+----------+-------------+ 
| Ramesh   | 20000       | 
| Komal    | 32000       | 
| Hardik   | 40000       | 
| Khilan   | 15000       | 
| Chaitali | 35000       | 
| kaushik  | 30000       |
+----------+-------------+ 
Fetched 6 row(s) in 1.75s

Suponga que esta tabla tiene varios registros como se muestra a continuación.

+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 1  | Ramesh   | 32  | Ahmedabad | 20000  |
| 2  | Ramesh   | 32  | Ahmedabad | 1000|  | 
| 3  | Khilan   | 25  | Delhi     | 15000  | 
| 4  | kaushik  | 23  | Kota      | 30000  | 
| 5  | Chaitali | 25  | Mumbai    | 35000  |
| 6  | Chaitali | 25  | Mumbai    | 2000   |
| 7  | Hardik   | 27  | Bhopal    | 40000  | 
| 8  | Komal    | 22  | MP        | 32000  | 
+----+----------+-----+-----------+--------+

Ahora, nuevamente, puede obtener el monto total de los salarios de los empleados, considerando las entradas repetidas de registros, utilizando el Group By cláusula como se muestra a continuación.

Select name, sum(salary) from customers Group BY name;

Al ejecutarse, la consulta anterior da el siguiente resultado.

Query: select name, sum(salary) from customers Group BY name 
+----------+-------------+ 
| name     | sum(salary) | 
+----------+-------------+ 
| Ramesh   | 21000       | 
| Komal    | 32000       | 
| Hardik   | 40000       | 
| Khilan   | 15000       | 
| Chaitali | 37000       | 
| kaushik  | 30000       | 
+----------+-------------+
Fetched 6 row(s) in 1.75s

los Having La cláusula en Impala le permite especificar condiciones que filtran qué resultados de grupo aparecen en los resultados finales.

En general, el Having la cláusula se usa junto con group bycláusula; coloca condiciones sobre los grupos creados por la cláusula GROUP BY.

Sintaxis

A continuación se muestra la sintaxis del Havingcláusula.

select * from table_name ORDER BY col_name [ASC|DESC] [NULLS FIRST|NULLS LAST]

Ejemplo

Supongamos que tenemos una tabla llamada customers en la base de datos my_db y su contenido es el siguiente:

[quickstart.cloudera:21000] > select * from customers; 
Query: select * from customers 
+----+----------+-----+-------------+--------+ 
| id | name     | age | address     | salary | 
+----+----------+-----+-------------+--------+ 
| 1  | Ramesh   | 32  | Ahmedabad   | 20000  |
| 2  | Khilan   | 25  | Delhi       | 15000  | 
| 3  | kaushik  | 23  | Kota        | 30000  | 
| 4  | Chaitali | 25  | Mumbai      | 35000  | 
| 5  | Hardik   | 27  | Bhopal      | 40000  | 
| 6  | Komal    | 22  | MP          | 32000  | 
| 7  | ram      | 25  | chennai     | 23000  | 
| 8  | rahim    | 22  | vizag       | 31000  | 
| 9  | robert   | 23  | banglore    | 28000  | 
+----+----------+-----+-----------+--------+ 
Fetched 9 row(s) in 0.51s

A continuación se muestra un ejemplo de uso Having cláusula en Impala -

[quickstart.cloudera:21000] > select max(salary) from customers group by age having max(salary) > 20000;

Esta consulta inicialmente agrupa la tabla por edad y selecciona los salarios máximos de cada grupo y muestra esos salarios, que son superiores a 20000 como se muestra a continuación.

20000 
+-------------+ 
| max(salary) |
+-------------+ 
| 30000       |
| 35000       | 
| 40000       | 
| 32000       | 
+-------------+ 
Fetched 4 row(s) in 1.30s

los limit La cláusula en Impala se usa para restringir el número de filas de un conjunto de resultados a un número deseado, es decir, el conjunto de resultados de la consulta no contiene los registros más allá del límite especificado.

Sintaxis

A continuación se muestra la sintaxis del Limit cláusula en Impala.

select * from table_name order by id limit numerical_expression;

Ejemplo

Supongamos que tenemos una tabla llamada customers en la base de datos my_db y su contenido es el siguiente:

[quickstart.cloudera:21000] > select * from customers; 
Query: select * from customers 
+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 3  | kaushik  | 23  | Kota      | 30000  | 
| 6  | Komal    | 22  | MP        | 32000  | 
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | 
| 5  | Hardik   | 27  | Bhopal    | 40000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  | 
| 8  | ram      | 22  | vizag     | 31000  | 
| 9  | robert   | 23  | banglore  | 28000  | 
| 7  | ram      | 25  | chennai   | 23000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
+----+----------+-----+-----------+--------+ 
Fetched 9 row(s) in 0.51s

Puede organizar los registros en la tabla en orden ascendente de sus identificaciones utilizando el order by cláusula como se muestra a continuación.

[quickstart.cloudera:21000] > select * from customers order by id; 
Query: select * from customers order by id 
+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  | 
| 3  | kaushik  | 23  | Kota      | 30000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
| 5  | Hardik   | 27  | Bhopal    | 40000  | 
| 6  | Komal    | 22  | MP        | 32000  | 
| 7  | ram      | 25  | chennai   | 23000  | 
| 8  | ram      | 22  | vizag     | 31000  |
| 9  | robert   | 23  | banglore  | 28000  | 
+----+----------+-----+-----------+--------+ 
Fetched 9 row(s) in 0.54s

Ahora, usando el limit cláusula, puede restringir el número de registros de la salida a 4, utilizando el limit cláusula como se muestra a continuación.

[quickstart.cloudera:21000] > select * from customers order by id limit 4;

Al ejecutarse, la consulta anterior da el siguiente resultado.

Query: select * from customers order by id limit 4 
+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  |
| 3  | kaushik  | 23  | Kota      | 30000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
+----+----------+-----+-----------+--------+ 
Fetched 4 row(s) in 0.64s

En general, las filas del conjunto de resultados de un select consulta comienza desde 0. Usando el offsetcláusula, podemos decidir desde dónde se debe considerar la salida. Por ejemplo, si elegimos el desplazamiento como 0, el resultado será el habitual y si elegimos el desplazamiento como 5, el resultado comienza desde la quinta fila.

Sintaxis

A continuación se muestra la sintaxis del offsetcláusula en Impala.

select data from table_name Group BY col_name;

Ejemplo

Supongamos que tenemos una tabla llamada customers en la base de datos my_db y su contenido es el siguiente:

[quickstart.cloudera:21000] > select * from customers; 
Query: select * from customers 
+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 3  | kaushik  | 23  | Kota      | 30000  | 
| 6  | Komal    | 22  | MP        | 32000  | 
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | 
| 5  | Hardik   | 27  | Bhopal    | 40000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  | 
| 8  | ram      | 22  | vizag     | 31000  | 
| 9  | robert   | 23  | banglore  | 28000  |
| 7  | ram      | 25  | chennai   | 23000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
+----+----------+-----+-----------+--------+ 
Fetched 9 row(s) in 0.51s

Puede organizar los registros en la tabla en orden ascendente de sus identificaciones y limitar el número de registros a 4, utilizando limit y order by cláusulas como se muestra a continuación.

Query: select * from customers order by id limit 4 
+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  | 
| 3  | kaushik  | 23  | Kota      | 30000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
+----+----------+-----+-----------+--------+ 
Fetched 4 row(s) in 0.64s

A continuación se muestra un ejemplo de offsetcláusula. Aquí, estamos obteniendo los registros en elcustomersmesa en el orden de su ID de impresión y las cuatro primeras filas a partir de la 0 ª fila.

[quickstart.cloudera:21000] > select * from customers order by id limit 4 offset 0;

Al ejecutar, la consulta anterior da el siguiente resultado.

Query: select * from customers order by id limit 4 offset 0 
+----+----------+-----+-----------+--------+
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  | 
| 3  | kaushik  | 23  | Kota      | 30000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
+----+----------+-----+-----------+--------+ 
Fetched 4 row(s) in 0.62s

De la misma forma, puede obtener cuatro registros del customers tabla a partir de la fila que tiene el desplazamiento 5 como se muestra a continuación.

[quickstart.cloudera:21000] > select * from customers order by id limit 4 offset 5; 
Query: select * from customers order by id limit 4 offset 5 
+----+--------+-----+----------+--------+ 
| id | name   | age | address  | salary | 
+----+--------+-----+----------+--------+ 
| 6  | Komal  | 22  | MP       | 32000  | 
| 7  | ram    | 25  | chennai  | 23000  | 
| 8  | ram    | 22  | vizag    | 31000  |
| 9  | robert | 23  | banglore | 28000  | 
+----+--------+-----+----------+--------+ 
Fetched 4 row(s) in 0.52s

Puede combinar los resultados de dos consultas utilizando el Union cláusula de Impala.

Sintaxis

A continuación se muestra la sintaxis del Union cláusula en Impala.

query1 union query2;

Ejemplo

Supongamos que tenemos una tabla llamada customers en la base de datos my_db y su contenido es el siguiente:

[quickstart.cloudera:21000] > select * from customers; 
Query: select * from customers 
+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | 
| 9  | robert   | 23  | banglore  | 28000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
| 7  | ram      | 25  | chennai   | 23000  | 
| 6  | Komal    | 22  | MP        | 32000  | 
| 8  | ram      | 22  | vizag     | 31000  | 
| 5  | Hardik   | 27  | Bhopal    | 40000  | 
| 3  | kaushik  | 23  | Kota      | 30000  | 
+----+----------+-----+-----------+--------+ 
Fetched 9 row(s) in 0.59s

De la misma manera, suponga que tenemos otra tabla llamada employee y su contenido es el siguiente:

[quickstart.cloudera:21000] > select * from employee; 
Query: select * from employee 
+----+---------+-----+---------+--------+ 
| id | name    | age | address | salary | 
+----+---------+-----+---------+--------+ 
| 3  | mahesh  | 54  | Chennai | 55000  | 
| 2  | ramesh  | 44  | Chennai | 50000  | 
| 4  | Rupesh  | 64  | Delhi   | 60000  | 
| 1  | subhash | 34  | Delhi   | 40000  | 
+----+---------+-----+---------+--------+ 
Fetched 4 row(s) in 0.59s

A continuación se muestra un ejemplo de unioncláusula en Impala. En este ejemplo, organizamos los registros en ambas tablas en el orden de sus ID y limitamos su número en 3 usando dos consultas separadas y uniendo estas consultas usando elUNION cláusula.

[quickstart.cloudera:21000] > select * from customers order by id limit 3
 union select * from employee order by id limit 3;

Al ejecutarse, la consulta anterior da el siguiente resultado.

Query: select * from customers order by id limit 3 union select 
   * from employee order by id limit 3 
+----+---------+-----+-----------+--------+ 
| id | name    | age | address   | salary | 
+----+---------+-----+-----------+--------+ 
| 2  | Khilan  | 25  | Delhi     | 15000  |
| 3  | mahesh  | 54  | Chennai   | 55000  | 
| 1  | subhash | 34  | Delhi     | 40000  | 
| 2  | ramesh  | 44  | Chennai   | 50000  | 
| 3  | kaushik | 23  | Kota      | 30000  | 
| 1  | Ramesh  | 32  | Ahmedabad | 20000  | 
+----+---------+-----+-----------+--------+ 
Fetched 6 row(s) in 3.11s

En caso de que una consulta sea demasiado compleja, podemos definir aliases a piezas complejas e inclúyalas en la consulta mediante la with cláusula de Impala.

Sintaxis

A continuación se muestra la sintaxis del with cláusula en Impala.

with x as (select 1), y as (select 2) (select * from x union y);

Ejemplo

Supongamos que tenemos una tabla llamada customers en la base de datos my_db y su contenido es el siguiente:

[quickstart.cloudera:21000] > select * from customers;
Query: select * from customers 
+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | 
| 9  | robert   | 23  | banglore  | 28000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
| 7  | ram      | 25  | chennai   | 23000  | 
| 6  | Komal    | 22  | MP        | 32000  | 
| 8  | ram      | 22  | vizag     | 31000  | 
| 5  | Hardik   | 27  | Bhopal    | 40000  | 
| 3  | kaushik  | 23  | Kota      | 30000  | 
+----+----------+-----+-----------+--------+ 
Fetched 9 row(s) in 0.59s

De la misma manera, suponga que tenemos otra tabla llamada employee y su contenido es el siguiente:

[quickstart.cloudera:21000] > select * from employee; 
Query: select * from employee 
+----+---------+-----+---------+--------+ 
| id | name    | age | address | salary | 
+----+---------+-----+---------+--------+ 
| 3  | mahesh  | 54  | Chennai | 55000  | 
| 2  | ramesh  | 44  | Chennai | 50000  | 
| 4  | Rupesh  | 64  | Delhi   | 60000  | 
| 1  | subhash | 34  | Delhi   | 40000  | 
+----+---------+-----+---------+--------+ 
Fetched 4 row(s) in 0.59s

A continuación se muestra un ejemplo de withcláusula en Impala. En este ejemplo, estamos mostrando los registros de ambosemployee y customers cuya edad es mayor de 25 usando with cláusula.

[quickstart.cloudera:21000] > 
   with t1 as (select * from customers where age>25), 
   t2 as (select * from employee where age>25) 
   (select * from t1 union select * from t2);

Al ejecutarse, la consulta anterior da el siguiente resultado.

Query: with t1 as (select * from customers where age>25), t2 as (select * from employee where age>25) 
   (select * from t1 union select * from t2)
+----+---------+-----+-----------+--------+ 
| id | name    | age | address   | salary | 
+----+---------+-----+-----------+--------+ 
| 3  | mahesh  | 54  | Chennai   | 55000  | 
| 1  | subhash | 34  | Delhi     | 40000  | 
| 2  | ramesh  | 44  | Chennai   | 50000  | 
| 5  | Hardik  | 27  | Bhopal    | 40000  | 
| 4  | Rupesh  | 64  | Delhi     | 60000  | 
| 1  | Ramesh  | 32  | Ahmedabad | 20000  | 
+----+---------+-----+-----------+--------+ 
Fetched 6 row(s) in 1.73s

los distinct El operador en Impala se utiliza para obtener valores únicos eliminando duplicados.

Sintaxis

A continuación se muestra la sintaxis del distinct operador.

select distinct columns… from table_name;

Ejemplo

Supongamos que tenemos una tabla llamada customers en Impala y sus contenidos son los siguientes:

[quickstart.cloudera:21000] > select distinct id, name, age, salary from customers; 
Query: select distinct id, name, age, salary from customers

Aquí puede observar el salario de los clientes que Ramesh y Chaitali ingresaron dos veces y usando el distinct operador, podemos seleccionar los valores únicos como se muestra a continuación.

[quickstart.cloudera:21000] > select distinct name, age, address from customers;

Al ejecutarse, la consulta anterior da el siguiente resultado.

Query: select distinct id, name from customers
+----------+-----+-----------+ 
| name     | age | address   | 
+----------+-----+-----------+ 
| Ramesh   | 32  | Ahmedabad |
| Khilan   | 25  | Delhi     | 
| kaushik  | 23  | Kota      | 
| Chaitali | 25  | Mumbai    |
| Hardik   | 27  | Bhopal    |
| Komal    | 22  | MP        | 
+----------+-----+-----------+
Fetched 9 row(s) in 1.46s