Почему ORC-таблица извлекает вставленные данные, но не загружает данные в куст [duplicate]

Я отвечу ужасным, нарисованным рукой комиком. Второе изображение является причиной того, что result является undefined в вашем примере кода.

31
задан Neels 6 January 2015 в 15:11
поделиться

4 ответа

LOAD DATA просто копирует файлы в файлы данных hive.

В этом случае входной файл /home/user/test_details.txt должен быть в формате ORC, если вы загружаете его в таблицу ORC.

Возможным обходным путем является создание временной таблицы с STORED AS TEXT, затем LOAD DATA в нее, а затем копирование данных из этой таблицы в таблицу ORC.

Вот пример:

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;
53
ответ дан Condla 27 August 2018 в 11:21
поделиться

Так как Hive не преобразовывает наши входные данные, формат должен быть одинаковым: либо файл должен быть в формате ORC, либо мы можем загружать данные из текстового файла в текстовую таблицу в Hive.

1
ответ дан Fabio Turati 27 August 2018 в 11:21
поделиться

ORC-файл - это формат двоичного файла, поэтому вы не можете напрямую загружать текстовые файлы в таблицы ORC. ORC означает Optimized Row Columnar, что означает, что он может хранить данные оптимизированным образом, чем другие форматы файлов. ORC уменьшает размер исходных данных до 75%. В результате скорость обработки данных также увеличивается. ORC показывает лучшую производительность, чем форматы Text, Sequence и RC. Файл ORC содержит данные строк в группах, называемых Stripes, вместе с нижним колонтитулом. Формат ORC улучшает производительность, когда Hive обрабатывает данные.

Сначала вам нужно создать одну обычную таблицу как textFile, загрузить ваши данные в таблицу textFile, а затем вы можете использовать запрос перезаписи вставки для записи ваших данных в 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;

Теперь все ваши данные будут сохранены в файле ORC. Подобная процедура применяется ко всем форматам двоичных файлов, то есть файлам последовательности, файлам RC и файлам Parquet в Hive.

Подробнее см. ссылку ниже.

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

0
ответ дан Kiran Krishna Innamuri 27 August 2018 в 11:21
поделиться

Шаги:

  1. Сначала создайте таблицу, используя ее как TEXTFILE (т.е. по умолчанию или в каком формате вы хотите создать таблицу)
  2. Загрузите данные в текстовую таблицу.
  3. Создать таблицу, используя ORC как select * from text_table;
  4. Выбрать * из таблицы orc.

Пример:

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
ответ дан Neels 27 August 2018 в 11:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: