我第一次使用猪。我已经达到了我想要的答案,但是采用了一种奇怪的嵌套格式:
{(price,49),(manages,"1d74426f-2b0a-4777-ac1b-042268cab09c")}
我希望输出为单个地图,没有任何包装:
[price#49, manages#"1d74426f-2b0a-4777-ac1b-042268cab09c"]
我设法使用TOMAP
来实现这一目标,但我无法弄清楚如何合并并将其展平。
{([price_specification#{"amount":49,"currency":"USD"}]),([manages#"newest-nodes/1d74426f-2b0a-4777-ac1b-042268cab09c"])}
我该怎么做呢?
答案 0 :(得分:1)
不幸的是,没有内置函数可以为您执行此操作。你必须编写自己的UDF。幸运的是,这很简单。
exec
方法就像:
public Map<String, Object> exec(Tuple input) {
Map<String, Object> m = new HashMap<String, Object>();
for (int i = 0; i < input.size(); i++)
m.putAll((Map<String, Object>) input.get(i));
return m;
}
UDF可以将任意数量的地图作为参数。
请注意,如果两个或多个地图共享一个密钥,那么遇到的最后一个地图将是保留的地图,而其他地图将被覆盖。