Я пытаюсь создать внешнюю таблицу в Афине, используя цитированный CSV-файл, хранящийся на S3.Проблема в том, что мой CSV содержит пропущенные значения в столбцах, которые должны читаться как INT.Простой пример:
CSV:
id,height,age,name
1,,26,"Adam"
2,178,28,"Robert"
CREATE TABLE DEFINITION:
CREATE EXTERNAL TABLE schema.test_null_unquoted (
id INT,
height INT,
age INT,
name STRING
)
ROW FORMAT
SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
'separatorChar' = ",",
'quoteChar' = '"',
'skip.header.line.count' = '1'
)
STORED AS TEXTFILE
LOCATION 's3://mybucket/test_null/unquoted/'
CREATE TABLE
оператор выполняется нормально, но как только я пытаюсь запросить таблицу,Я получаю HIVE_BAD_DATA: Error parsing field value ''
.
Я пытался сделать CSV похожим на это (цитата пустая строка):
"id","height","age","name"
1,"",26,"Adam"
2,178,28,"Robert"
Но это не работает.
Пробовал указывать'serialization.null.format' = ''
in SERDEPROPERTIES
- не работает.
Попытка указать то же самое с помощью TBLPROPERTIES ('serialization.null.format'='')
- по-прежнему ничего.
Работает, когда вы указываете все столбцы как STRING
, но это не такчто мне нужно.
Следовательно, вопрос в том, есть ли любой способ прочитать цитируемое CSV (цитирование важно, поскольку мои реальные данные намного сложнее) в Афину с правильной спецификацией столбца