Я написал следующий запрос:
CREATE TEMPORARY EXTERNAL TABLE IF NOT EXISTS `temp_data`(
`price` double,
`genre` string,
`all_genres` string,
`languages` string)
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
LOCATION
'/user/abc/data'
TBLPROPERTIES (
'transient_lastDdlTime'='1588006839');
последние два столбца - это список массивов со следующим шаблоном: ['val1', 'val2', 'val3']
после того, как ошибка не возникнет запуск.
После выполнения этой части кода все в порядке, но когда я добавляю
'SELECT * FROM temp_data'
, я получаю сообщение об ошибке:
Failed to fetch next batch for the Resultset
org.apache.hive.service.cli.HiveSQLException: java.io.IOException: java.lang.RuntimeException: ORC split generation failed with exception: org.apache.orc.FileFormatException: Malformed ORC file /user/abc/data/data.csv. Invalid postscript.
Кто-нибудь знает как это исправить?
РЕДАКТИРОВАНИЕ:
После этого:
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION '/user/abc/data'
TBLPROPERTIES ('skip.header.line.count'='1');
У меня проблема, так как Select неправильно возвращает данные, поскольку массив содержит запятые
РЕДАКТИРОВАТЬ 2 Мне удалось решить, добавив:
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES ( "separatorChar" = ",", "quoteChar" = "\"")
LOCATION '/user/ABC/data'
TBLPROPERTIES ('skip.header.line.count'='1', 'colelction.delim'=',');