Карта также сериализуется как строка и сохраняется в виде строк. Данные, передаваемые между маппером и редуктором, сериализуются в строки, а затем снова сериализуются. Вы не заметите разницу. Но в случае с типом карты SerDe будет десериализован как тип карты, и вы можете напрямую применять операторы карты в запросе, например select m[key]
или size(m)
или map_keys(m)
. Это выглядит намного проще, чем использование JSON_TUPLE()
, вероятно, вместе с lateral view
или GET_JSON_OBJECT()
, в этом случае карта может работать немного быстрее, хотя JSON может хранить более сложные структуры, такие как вложенные массивы карт. Выберите карту, если она подходит для ваших данных и JSON для сложных структур.