данные отображаются как нулевые на внешней таблице красного смещения при работе прямо на Афины - PullRequest
0 голосов
/ 30 августа 2018

Итак, я пытаюсь выполнить следующий простой запрос по спектру красного смещения:

select * from company.vehicles where vehicle_id is not null

и возвращает 0 строк (все строки в таблице нулевые). Однако, когда я выполняю тот же запрос в Афине, он работает нормально и возвращает результаты. Попытка восстановления msck, но и athena, и красное смещение используют одно и то же метастор, так что это не должно иметь значения. Я также не вижу никаких ошибок.

Формат файлов: orc.

Запрос создания таблицы:

CREATE EXTERNAL TABLE 'vehicles'(
  'vehicle_id' bigint, 
  'parent_id' bigint, 
  'client_id' bigint, 
  'assets_group' int, 
  'drivers_group' int)
PARTITIONED BY ( 
  'dt' string, 
  'datacenter' 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
  's3://company-rt-data/metadata/out/vehicles/'
TBLPROPERTIES (
  'CrawlerSchemaDeserializerVersion'='1.0', 
  'CrawlerSchemaSerializerVersion'='1.0',  
  'classification'='orc', 
  'compressionType'='none')

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

В итоге это оказалось ошибкой в ​​красном смещении. Чтобы это исправить, нам нужно было выполнить следующую команду:

ALTER TABLE table_name SET TABLE properties(‘orc.schema.resolution’=‘position’);
0 голосов
/ 30 августа 2018

Как вы создали свою внешнюю таблицу ?? Для Спектрума вы должны явно установить параметры для обработки того, что следует рассматривать как ноль

добавить параметр 'serialization.null.format' = '' в свойствах таблицы, чтобы все столбцы с символом '' обрабатывались как NULL для вашей внешней таблицы в спектре

**

CREATE EXTERNAL TABLE external_schema.your_table_name(
)
row format delimited
    fields terminated by ','
    stored as textfile 
LOCATION [filelocation]
TABLE PROPERTIES('numRows'='100', 'skip.header.line.count'='1','serialization.null.format'='');

**

Кроме того, вы можете настроить СЕРДЕЧНЫЕ СВОЙСТВА при создании внешней таблицы, которая автоматически распознает значения NULL

...