Почему ключ Hive Map (i16) не может перевернуться вверх при поиске по ключу? - PullRequest
0 голосов
/ 05 марта 2019

Существует таблица Hive, которая определяется thrift.

struct A {
    1: optional map<i16, string> myMap;
}

Я попытался выполнить несколько запросов для поиска в этой таблице.

// this one gets an error:
select myMap[10] from A where myMap[10] is not null

Строка 1:74Тип ключа MAP не соответствует типу выражения индекса '10'

И следующие два возвращают правильные результаты.

// this one works well
select myMap[10S] from A where myMap[10S] is not null

// this one works well
select myMap[10Y] from A where myMap[10Y] is not null

Я знаю 10Y означает tinyint и 10S означает smallint, а i16 - smallint.

Но почему Hive разыгрывает smallint до tinyint вместо int?

Я думаю, это может привести к потере информации или переполнению номера.

...