如何从地图中提取密钥?

时间:2014-07-08 09:41:36

标签: apache-pig

如何从map字段中提取所有密钥?
我有一个元组包,其中一个字段是包含HTTP标头(及其值)的地图。我想为HTTP标题创建一组所有可能的键(在我的数据集中)并计算我看过它们的次数。

理想情况下,如:

A = LOAD ...
B = FOREACH A GENERATE KEYS(http_headers)
C = GROUP FLATTEN(B) BY $0
D = FOREACH C GENERATE group, COUNT($0)

(没有测试它,但它说明了这个想法..)

我该怎么办?如果我可以从bag中提取map个密钥,它实际上会解决它。我只是在piglatin的文档中找不到这样的函数。

1 个答案:

答案 0 :(得分:1)

是的,在Pig中有一个命令可以完成此任务。

示例:

/*  data  */
[a#1,b#2,c#3]
[green#sam,eggs#I,ham#am]

A = load 'data' as (M:[]);
B = foreach A generate KEYSET($0);
dump B

<强>输出:

({(b),(c),(a)})
({(ham),(eggs),(green)})