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...
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;
1条答案
按热度按时间yhived7q1#
使用brickhouse udf将其转换为json字符串,下载源代码,编译,添加jar文件并创建函数,参见入门说明:
更新:
正如@rajnish在注解中提到的,Map没有排序,这可能会导致比较转换为json的Map时出现问题。
Map示例:
结果:
最好像本例中那样比较每个值,或者使用hashmap.equals方法编写自己的自定义项。
默认情况下,hashmap。equals()方法通过键值对比较两个哈希Map。这意味着两个hashmap示例必须具有完全相同的键值对,并且两者的大小必须相同。键值对的顺序可以不同,在比较中不起作用。如何比较java中的两个hashmap