Redshift COPY from Parquet File, интерпретирующий столбец JSON как несколько столбцов - PullRequest
1 голос
/ 29 марта 2019

Я импортирую файл паркета из S3 в Redshift. Файл имеет 3 столбца. Последний столбец - это объект JSON с несколькими столбцами. Используя следующий код:

CREATE TABLE database_name.table_name (
    text_field_1 VARCHAR(255)
    , text_field_2 VARCHAR(255), 
    , json_field_1  VARCHAR(255));

Затем я делаю команду копирования:

 copy parquet.raw_jamcityads_purchase from 's3://my-bucket/my-file.parquet'
 iam_role 'arn:aws:iam::1###########2:role/R######S3'        
 parquet;    

Проблема в том, что команда COPY интерпретирует json_field_1 в файле паркета как несколько столбцов и выдает мне эту ошибку:

Query execution failed

Reason:
SQL Error [500310] [XX000]: [Amazon](500310) Invalid operation: S3 Query Exception (Fetch) 
Details: 
-----------------------------------------------
  error:  S3 Query Exception (Fetch)
  code:      15001
  context:   Task failed due to an internal error. Unmatched number of columns between table and file. Table columns: 3, Data columns: 5, File name: ####
  query:     4384070
  location:  dory_util.cpp:872
  process:   query1_56_4384070 [pid=18317]
-----------------------------------------------;

Я не уверен, как сказать Redshift, что json_field_1 - это одно поле в файле паркета.

Я предпочитаю достичь этой цели с помощью команды COPY, а не исследовать Redshift Spectrum / Athena / и т. Д., Поскольку именно так мы загружаем данные наших клиентов.

Я хотел бы иметь возможность загружать столбец JSON в виде строки и распоряжаться им. Мне не нужно то, что там. Сейчас я не могу загрузить файл PARQUET полностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...