Как создать таблицу imapala со сложным типом данных и как указать разделитель для столбца типа массива - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь создать таблицу импала с массивом типом столбца, мне нужно использовать настраиваемый разделитель для столбца типа массива.

Я пробовал ниже запрос. Но это ошибка выброса.

Create table array_demo( arra_col ARRAY<string>) row format delimited fields terminated by ','
collection items terminated by '|' stored as parquet

1 Ответ

2 голосов
/ 19 июня 2020

Вы должны опустить предложение ROW FORMAT и подпункты, определяющие терминаторы, и включить предложение STORED AS (Parquet - единственный формат, который Impala поддерживает со сложными данными).

Файлы данных для загрузки таблицы также должны быть в формате паркета.

Если у вас нет файла данных в формате Parquet, вы можете создать таблицу в Hive, а затем создать копию, используя CREATE TABLE … AS SELECT (оператор CTAS), с STORED AS PARQUET.

Затем вы можете запросить таблицу в Impala.

В качестве примера

-- Create table in Hive
CREATE TABLE array_demo( arra_col ARRAY<STRING>) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
COLLECTION ITEMS TERMINATED BY '|' 
STORED AS TEXTFILE;

-- Copy the table as parquet format
CREATE TABLE array_demo_impala AS 
SELECT *
FROM array_demo
STORED AS PARQUET;
...