Получение значений NULL из S3 при выборе спектра спектра AWS Redshift

Я могу выгружать данные в S3 и запрашивать результаты с помощью Spectrum, но НЕ при использовании разделителя, определенного ниже. Это наш стандартный разделитель, который работает со всей нашей сегодняшней обработкой, связанной с командами Redshift COPY и UNLOAD, поэтому я считаю, что UNLOAD работает нормально. Но где-то между определением таблицы и SQL-запросом для извлечения данных это не работает. Мы просто получаем NULLS для всех полей. Можете ли вы взглянуть на наш пример ниже, чтобы определить следующие шаги.

unload ('select * from db.test')
to 's3://awsbucketname/ap_cards/'
iam_role 'arn:aws:iam::123456789101:role/redshiftaccess'
delimiter '\325'
manifest;

CREATE EXTERNAL TABLE db_spectrum.test (
cost_center varchar(100) ,
fleet_service_flag varchar(1)
)
row format delimited
fields terminated by '\325'
stored as textfile
location 's3://awsbucketname/test/';

select * from db_spectrum.test

person Prajakta Yerpude    schedule 19.02.2018    source источник
comment
Мне любопытно, что происходит, когда вы используете другой разделитель (один из стандартных восьмеричных кодов ASCII)? Вы все еще получаете NULL?   -  person Khalid T.    schedule 19.02.2018
comment
Привет, Халид Т., разделитель работает при создании таблицы, но я предполагаю, что во внешних таблицах есть проблема с интерпретацией разделителей. Я застрял здесь :(   -  person Prajakta Yerpude    schedule 19.02.2018
comment
Вы пытались создать внешнюю таблицу с другим разделителем, например «|». как вы проверили, что выгрузка работает нормально?   -  person sia    schedule 19.02.2018
comment
Да, команда работает с '|', но проблема в том, что она работает с '\325', когда я выгружаюсь из redshift в S3 gzip, а затем создаю внешнюю таблицу. Но удивительно то, что файл загружается с «\ 199» в S3. Но все мои файлы уже лежат на S3 в формате '\325' gzip. И когда я выбираю данные, я получаю нулевые значения.   -  person Prajakta Yerpude    schedule 19.02.2018
comment
И проблема заключается в моем отображении от S3. Он извлекал результаты из S3, когда выгрузка и создание внешней таблицы выполнялись с использованием 'Õ', но не с использованием восьмеричного эквивалента '\325'. Не могли бы вы помочь мне с этим, так как все мои таблицы уже выгружены с помощью «\ 325».   -  person Prajakta Yerpude    schedule 19.02.2018


Ответы (2)


Получил ответ от центра поддержки AWS: «К сожалению, вам нужно будет либо обработать данные извне, чтобы изменить разделитель, либо снова ВЫГРУЗИТЬ данные с другим разделителем.

В документах говорится указать один символ ASCII для "разделителя".

Диапазон ASCII доходит только до 177 в восьмеричной системе.

Мы уточним документы, чтобы отметить, что 177 является максимально допустимым восьмеричным числом для разделителя. Я могу подтвердить, что то же самое и в Афине.

Спасибо, что обратили на это наше внимание.

person Prajakta Yerpude    schedule 21.02.2018

Вы можете попробовать использовать для этого Spectrify. Он автоматизирует многие неприятности, связанные с переносом таблицы красных смещений в спектр.

person Colin Nichols    schedule 22.02.2018
comment
Спасибо за это! Попробую. - person Prajakta Yerpude; 23.02.2018