ORC с указанием сериализатора не работает

У меня есть некоторые данные в HDFS, которые были импортированы с помощью Sqoop. Данные были импортированы как ORC, а сжатие - Snappy.

Я пытаюсь создать таблицу поверх этих данных с помощью следующего оператора DDL. Однако я получаю следующую ошибку.

СБОЙ: SemanticException [Ошибка 10043]: должен быть указан либо список столбцов, либо настраиваемый сериализатор

Тем не менее, я определяю "пользовательский сериализатор", определяя ROW FORMAT SERDE and STORED AS INPUTFORMAT and OUTPUTFORMAT

ЗАЯВЛЕНИЕ DDL:

CREATE EXTERNAL TABLE test_db.my_table_orc
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
LOCATION  '/hdfs/app/DL/ORC_DATA_LOCATION'
tblproperties ("orc.compress"="SNAPPY");

2 ответа

Решение

В настоящее время Hive не может поддерживать создание таблицы ORC без указания списка столбцов в DDL. Файлы ORC содержат метаданные о столбцах, поэтому, если вы не уверены в столбцах данного файла ORC, вы можете запустить утилиту дампа файла ORC, чтобы получить ее.

  1. Определите столбцы таблицы.
  2. Нет необходимости в формате ввода / вывода. stored as orc достаточно.
Другие вопросы по тегам