Загрузка специальных символов в таблицу спектра AWS

#character-encoding #amazon-redshift #special-characters #amazon-redshift-spectrum

Вопрос:

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

Создать инструкцию:

 create external table s.table_1
(
    id bigint,
    city varchar(100)
)
partitioned by (file_date varchar(25))
row format serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
    with serdeproperties ('quoteChar'='"', 'separatorChar'=';', 'serialization.format'='1') stored as
    inputformat 'org.apache.hadoop.mapred.TextInputFormat'
    outputformat 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
location 's3://my_bucket/my_prefix/'
table properties ('skip.header.line.count'='1');
 

Но результаты, которые я получаю при выборе, таковы:

 id,city
1,<null>
2,<null>
3,Erfurt
4,Erfurt
5,Lahr
 

Вместо ожидаемого:

 id,city
1,Mönchengladbach
2,Mönchengladbach
3,Erfurt
4,Erfurt
5,Lahr
 

Я пытался:

  1. установить serdeproperties 'serialization.format'= '1' или 'UTF-8' или 'Latin-1' или 'ISO 8859-1'
  2. установите row format delimited fields terminated by ';' и измените serialization.format значение table properties

но ничего из вышеперечисленного не сработало. Я просто копирую файл, и мне было бы удобно загрузить его без необходимости преобразовывать его заранее. Есть какие-нибудь предложения? Заранее спасибо.

Комментарии:

1. У меня нет под рукой кластера, но разве кодировка текста не задана в свойствах кластера? может быть, это влияет на Спектр. В любом случае, вы обнаружили одну из ключевых причин отказа от использования Spectrum; тихие ошибки.