ETL de Hive: carga de JSON, XML, ejemplos de datos de texto

Hive como herramienta de almacenamiento de datos y ETL además de Hadoop El ecosistema proporciona funcionalidades como modelado de datos, manipulación de datos, procesamiento de datos y consulta de datos. La extracción de datos en Hive significa la creación de tablas en Hive y la carga de datos estructurados y semiestructurados, así como la consulta de datos según los requisitos.

Para el procesamiento por lotes, escribiremos scripts definidos personalizados utilizando un mapa personalizado y reduciremos los scripts utilizando un lenguaje de scripting. Proporciona SQL entorno similar y soporte para consultas sencillas.

Trabajar con datos estructurados usando Hive

Datos estructurados significa que los datos están en el formato adecuado de filas y columnas. Esto es más como RDBMS datos con filas y columnas adecuadas.

Aquí vamos a cargar datos estructurados presentes en archivos de texto en Hive.

Paso 1) En este paso, estamos creando la tabla "employees_guru" con nombres de columnas como Id., Nombre, Edad, Dirección, Salario y Departamento de los empleados con tipos de datos.

Trabajar con datos estructurados usando Hive

De la captura de pantalla anterior, podemos observar lo siguiente:

  1. Creación de tabla “empleados_guru”
  2. Cargando datos de Employees.txt en la tabla "employees_guru"

Paso 2) En este paso mostramos el contenido almacenado en esta tabla mediante el comando “Seleccionar”. Podemos observar el contenido de la tabla en la siguiente captura de pantalla.

Trabajar con datos estructurados usando Hive

– Fragmento de código de muestra

Consultas a realizar

1) Create table employees_guru(Id INT, Name STRING, Age INT, Address STRING, Salary FLOAT, Department STRING)
> Row format delimited
> Fields terminated by ',';
2) load data local inpath '/home/hduser/Employees.txt' into TABLE employees_guru;
3) select * from employees_guru;

Trabajar con datos semiestructurados usando Hive (XML, JSON)

Hive realiza funcionalidades ETL en el ecosistema Hadoop actuando como Herramienta ETLPuede resultar difícil realizar una reducción de mapas en algunos tipos de aplicaciones, Hive puede reducir la complejidad y proporciona la mejor solución para las aplicaciones de TI en términos del sector de almacenamiento de datos.

Los datos semiestructurados, como XML y JSON, se pueden procesar con menos complejidad utilizando Hive. Primero veremos cómo podemos utilizar Hive para XML.

TABLA XML A HIVE

En esto, cargaremos datos XML en tablas de Hive y recuperaremos los valores almacenados dentro de las etiquetas XML.

Paso 1) Creación de la tabla “xmlsample_guru” con columna str con tipo de datos de cadena.

Trabajar con datos semiestructurados usando Hive

De la captura de pantalla anterior, podemos observar lo siguiente

  1. Creación de tabla “xmlsample_guru”
  2. Cargando datos de test.xml en la tabla "xmlsample_guru"

Paso 2) Gracias a XPath () podremos recuperar los datos almacenados dentro de las etiquetas XML.

Trabajar con datos semiestructurados usando Hive

De la captura de pantalla anterior, podemos observar lo siguiente

  1. Usando el método XPATH( ), estamos recuperando los valores almacenados en /emp/esal/ y /emp/ename/
  2. Valores presentes dentro de etiquetas XML. En este paso, mostramos los valores reales almacenados en etiquetas XML en la tabla "xmlsample_guru"

Paso 3) En este paso, buscaremos y mostraremos el XML sin formato de la tabla "xmlsample_guru".

Trabajar con datos semiestructurados usando Hive

De la captura de pantalla anterior, podemos observar lo siguiente

  • Los datos XML reales que se muestran con etiquetas.
  • Si observamos una sola etiqueta, es con "emp" como etiqueta principal con "ename" y "esal" como etiquetas secundarias.

Fragmento de código:

Consultas a realizar

1) create table xmlsample_guru(str string);                                                                                                   2) load data local inpath '/home/hduser/test.xml' overwrite  into table xmlsample_guru;
3) select xpath(str,'emp/ename/text()'), xpath(str,'emp/esal/text()') from xmlsample_guru;

JSON (JavaNotación de objetos de script)

Los datos de Twitter y sitios web se almacenan en formato JSON. Siempre que intentemos recuperar datos de servidores en línea, devolverá archivos JSON. Al usar Hive como almacén de datos, podemos cargar datos JSON en tablas de Hive mediante la creación de esquemas.

JSON A LA TABLA DE HIVE

En esto, cargaremos datos JSON en tablas de Hive y recuperaremos los valores almacenados en el esquema JSON.

Paso 1) En este paso, crearemos el nombre de la tabla JSON "json_guru". Una vez creado, carga y muestra el contenido del esquema real.

Json a la tabla Hive

De la captura de pantalla anterior, podemos observar lo siguiente

  1. Creación de tabla “json_guru”
  2. Cargando datos de test.json en la tabla "json_guru"
  3. Mostrando el esquema real del archivo JSON almacenado en las tablas json_guru

Paso 2) Usando el método get_json_object() podemos recuperar los valores de datos almacenados en la jerarquía JSON

Json a la tabla Hive

De la captura de pantalla anterior podemos observar lo siguiente

  1. Usando get_json_object (str,’$.ecode) puede recuperar valores de ecode de la tabla json_guru. De manera similar, al usar get_json_object (str,’$.ename), get_json_object (str,’$.Sali), obtendrá los valores de ename sal de la tabla json_guru
  2. Valores almacenados dentro de la jerarquía JSON en json_guru

Fragmento de código

Consultas a realizar

1) create table json_guru(str string);
2) load data inpath 'home/hduser/test.json' into table json_guru;
3) select * from json1;
4) select get_json_object(str,'$.ecode') as ecode, get_json_object(str,'$.ename') as ename ,get_json_object(str,'$.sal') as salary from json_guru;

Tabla compleja de JSON a HIVE

En esto, vamos a cargar datos JSON complejos en tablas de Hive y recuperaremos los valores almacenados en el esquema JSON.

Paso 1) Creación de complexjson_guru con un campo de una sola columna

Tabla compleja de JSON a Hive

De la captura de pantalla anterior, podemos observar lo siguiente

  1. Creación en la tabla complexjson_guru con un campo de columna única como tipo de datos de cadena
  2. Carga de datos en complexjson_guru desde el archivo JSON complejo emp.json

Paso 2) Al usar get_json_object podemos recuperar el contenido real almacenado dentro de la jerarquía de archivos JSON.

En la siguiente captura de pantalla, podemos ver la salida de los datos almacenados en complexjson_guru.

Tabla compleja de JSON a Hive

Paso 3) En este paso, al usar el comando “Seleccionar”, podemos ver datos JSON complejos almacenados dentro de la tabla “complexjson_guru”.

Tabla compleja de JSON a Hive

-Fragmento de código de muestra,

Consultas a realizar

1) create table complexjson_guru(json string);
2) load data inpath 'home/hduser/emp.json' into table complexjson_guru;
3) select get_json_object(json,'$.ecode') as ecode ,get_json_object(json,'$.b') as code, get_json_object(json,'$.c') from complexjson_guru;
4) select * from complexjson_guru;

Hive en proyectos en tiempo real: cuándo y dónde utilizarlo

Cuándo y dónde utilizar Hive en el ecosistema Hadoop:

Cuándo

  • Al trabajar con funciones estadísticas potentes y sólidas en el ecosistema Hadoop
  • Cuando se trabaja con procesamiento de datos estructurados y semiestructurados
  • Como herramienta de almacenamiento de datos con Hadoop
  • Ingestión de datos en tiempo real con HBASE, se puede utilizar Hive

Dónde

  • Para facilitar el uso de ETL y la herramienta de almacenamiento de datos
  • Proporcionar un entorno de tipo SQL y realizar consultas como SQL usando HIVEQL
  • Para usar e implementar mapas personalizados y scripts reductores para los requisitos específicos del cliente.