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

Tabla de contenido:

Anonim

Hive como una herramienta de almacenamiento de datos y ETL sobre el ecosistema de Hadoop 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 un entorno similar a SQL y soporte para consultas sencillas.

En este tutorial, aprenderá:

  • Trabajar con datos estructurados mediante Hive
  • Trabajar con datos semiestructurados usando Hive (XML, JSON)
  • Hive en proyectos en tiempo real: cuándo y dónde usar

Trabajar con datos estructurados mediante Hive

Datos estructurados significa que los datos están en el formato adecuado de filas y columnas. Esto es más como datos RDBMS 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 "employee_guru" con nombres de columna como Id, Nombre, Edad, Dirección, Salario y Departamento de los empleados con tipos de datos.

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

  1. Creación de la tabla "employee_guru"
  2. Cargando datos de Employees.txt en la tabla "employee_guru"

Paso 2) En este paso estamos mostrando el contenido almacenado en esta tabla usando el comando "Seleccionar". Podemos observar el contenido de la tabla en la siguiente captura de pantalla.

- 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 ETL. Puede ser difícil realizar la reducción de mapas en algún tipo 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 usar Hive para XML.

TABLA XML A COLMERA

En esto, vamos a cargar datos XML en tablas de Hive y buscaremos 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.

De la captura de pantalla anterior, podemos observar lo siguiente

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

Paso 2) Usando el método XPath () podremos recuperar los datos almacenados dentro de las etiquetas XML.

De la captura de pantalla anterior, podemos observar lo siguiente

  1. Usando el método XPATH () estamos obteniendo los valores almacenados en / emp / esal / y / emp / ename /
  2. Los valores presentes dentro de las 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".

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 (notación de objetos JavaScript)

Los datos de Twitter y sitios web se almacenan en formato JSON. Siempre que intentemos obtener 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.

TABLA DE JSON A HIVE

En esto, vamos a cargar datos JSON en tablas de Hive y buscaremos 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.

De la captura de pantalla anterior, podemos observar lo siguiente

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

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

De la captura de pantalla anterior podemos observar lo siguiente

  1. Usando get_json_object (str, '$. Ecode) puede obtener 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 sal de ename 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;

JSON complejo a la tabla HIVE

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

Paso 1) Crear complexjson_guru con un campo de una sola columna

De la captura de pantalla anterior, podemos observar lo siguiente

  1. Creación en la tabla complexjson_guru con un campo de una sola columna 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 que se almacenó 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.

Paso 3) En este paso, al usar el comando "Seleccionar", en realidad podemos ver datos JSON complejos almacenados dentro de la tabla "complexjson_guru"

- 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 usar

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

Cuando

  • Cuando se trabaja con funciones estadísticas sólidas y potentes en el ecosistema de 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
  • Para proporcionar un entorno de tipo SQL y realizar consultas como SQL usando HIVEQL
  • Para utilizar e implementar scripts de reductores y mapas especificados personalizados para los requisitos específicos del cliente