Cargando datos desde a.txt archivo a Tabla Almacenado como ORC en la Colmena


Tengo un archivo de datos que está en formato .txt. Estoy usando el archivo para cargar datos en tablas de colmena. Cuando carga el archivo en una tabla como

CREATE TABLE test_details_txt(
visit_id INT,
store_id SMALLINT) STORED AS TEXTFILE;

Los datos se cargan correctamente usando

LOAD DATA LOCAL INPATH '/home/user/test_details.txt' INTO TABLE test_details_txt;

Y puedo ejecutar un SELECT * FROM test_details_txt; en la tabla en la Colmena.

Sin Embargo Si intento cargar los datos en una tabla que es

CREATE TABLE test_details_txt(
visit_id INT,
store_id SMALLINT) STORED AS ORC; 

Recibo el siguiente error al intentar ejecutar un SELECT:

Failed with exception java.io.IOException:java.io.IOException: Malformed ORC file hdfs://master:6000/user/hive/warehouse/test.db/transaction_details/test_details.txt. Invalid postscript.

Mientras carga los datos usando la instrucción de carga anterior, no recibo ninguna error o excepción.

¿Hay algo más que deba hacerse mientras se usa el comando LOAD DATA IN PATH.. para almacenar datos en una tabla ORCO?

 31
Author: Neels, 2014-02-12

5 answers

LOAD DATA simplemente copia los archivos a los archivos de datos de hive. Hive no realiza ninguna transformación al cargar datos en tablas.

Por lo tanto, en este caso el archivo de entrada /home/user/test_details.txt debe estar en formato ORC si lo está cargando en una tabla ORC.

Una posible solución es crear una tabla temporal con STORED AS TEXT, luego LOAD DATA en ella, y luego copiar los datos de esta tabla a la tabla ORC.

Aquí hay un ejemplo:

CREATE TABLE test_details_txt( visit_id INT, store_id SMALLINT) STORED AS TEXTFILE;
CREATE TABLE test_details_orc( visit_id INT, store_id SMALLINT) STORED AS ORC;

-- Load into Text table
LOAD DATA LOCAL INPATH '/home/user/test_details.txt' INTO TABLE test_details_txt;

-- Copy to ORC table
INSERT INTO TABLE test_details_orc SELECT * FROM test_details_txt;
 54
Author: Sunny Nanda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-14 13:53:17

Pasos:

  1. Primero cree una tabla usando stored as TEXTFILE (es decir, por defecto o en qué formato desea crear la tabla)
  2. Cargue los datos en la tabla de texto.
  3. Crear tabla usando almacenado como ORC como select * from text_table;
  4. Seleccione * de la tabla orc.

Ejemplo:

CREATE TABLE text_table(line STRING);

LOAD DATA 'path_of_file' OVERWRITE INTO text_table;

CREATE TABLE orc_table STORED AS ORC AS SELECT * FROM text_table;

SELECT * FROM orc_table;   /*(it can not be read)*/
 4
Author: Brijesh Mishra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-02 00:23:22

Dado que Hive no hace ninguna transformación a nuestros datos de entrada, el formato debe ser el mismo: o el archivo debe estar en formato ORC, o podemos cargar datos de un archivo de texto a una tabla de texto en Hive.

 1
Author: Amarnath Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-29 15:16:23

El archivo ORC es un formato de archivo binario, por lo que no puede cargar directamente archivos de texto en tablas ORC. ORC significa Columna de fila optimizada, lo que significa que puede almacenar datos de una manera optimizada que los otros formatos de archivo. ORC reduce el tamaño de los datos originales hasta un 75%. Como resultado, la velocidad de procesamiento de datos también aumenta. ORC muestra un mejor rendimiento que los formatos de archivo de texto, Secuencia y RC. Un archivo ORC contiene datos de filas en grupos llamados como rayas junto con un pie de página del archivo. Formato ORC mejora el rendimiento cuando Hive está procesando los datos.

Primero debe crear una tabla normal como archivo de texto, cargar sus datos en la tabla de archivo de texto y luego puede usar insertar consulta de sobrescritura para escribir sus datos en el archivo ORC.

create table table_name1 (schema of the table) row format delimited by ',' | stored as TEXTFILE

create table table_name2 (schema of the table) row format delimited by ',' | stored as ORC

load data local inpath ‘path of your file’ into table table_name1;(loading data from a local system)

INSERT OVERWRITE TABLE table_name2 SELECT * FROM table_name1;

Ahora todos sus datos se almacenarán en un archivo ORC. El procedimiento similar se aplica a todos los formatos de archivo binario, es decir, archivos de secuencia, archivos RC y archivos de parquet en Hive.

Puede consultar el siguiente enlace para obtener más información detalles.

Https://acadgild.com/blog/file-formats-in-apache-hive /

 0
Author: Kiran Krishna Innamuri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-05 07:18:34

Pasos para cargar datos en formato de archivo ORC en hive

1.Crear una tabla normal usando el formato textFile

2.Cargar los datos normalmente en esta tabla

3.Cree una tabla con el esquema de los resultados esperados de su tabla de colmena normal usando stored as orcfile

4.Insertar consulta de sobrescritura para copiar los datos de la tabla textFile a la tabla orcfile

Consulte el blog para aprender el manual de cómo cargar datos en todos los formatos de archivo en hive

Cargar datos en todos los formatos de archivo en hive

 0
Author: Kiran Krishna Innamuri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-05 13:04:44