Преобразуйте его в JSON строку, используя brickhouse udf , загрузите исходники, скомпилируйте, добавьте файл jar и создайте функцию, см. Getting Started инструкции:
add jar /path/brickhouse-0.7.0-SNAPSHOT.jar;
CREATE TEMPORARY FUNCTION to_json AS 'brickhouse.udf.json.ToJsonUDF';
select to_json(dim_map) as dim_map_json
from...
Обновление:
Поскольку @ rajni sh упоминается в комментарии, карты не упорядочены, и это может вызвать проблемы при сравнении таких карт, преобразованных в JSON.
Пример карт:
with test_data as (
select map('dim_geo', 'San Francisco', 'dim_country','USA') map1,
map('dim_country','USA','dim_geo', 'San Francisco') map2
)
select map1, map2,
case when map1['dim_geo'] = map2['dim_geo']
and map1['dim_country'] = map2['dim_country']
then 'equal'
else 'not equal' end as compare_maps
from test_data;
Результат:
map1 map2 compare_maps
{"dim_geo":"San Francisco","dim_country":"USA"} {"dim_country":"USA","dim_geo":"San Francisco"} equal
Лучше сравнить каждое значение, как в этом примере, или написать свой UDF, используя метод HashMap.equals.
По умолчанию HashMap. Метод equals () сравнивает две хеш-карты по парам ключ-значение. Это означает, что оба экземпляра hashmap должны иметь одинаковые пары ключ-значение, и оба должны иметь одинаковый размер. Порядок пар ключ-значение может быть разным и не играет роли в сравнении. Как сравнить два хеш-карты в Java