pig拉丁语为每个元组计算map中的键数

pkbketx9  于 2021-06-25  发布在  Pig
关注(0)|答案(1)|浏览(345)

我正在尝试获取别名中所有用户的计数。每行包含一个用户Map。
比如:([user_name/454543#paul kison])([user_name/43433ţjosiel的iphone,user_name/34343434ţjose的ipad,user_name/3434645655ţjosiel的])
在对整个别名使用size()时,我得到以下错误:错误1066:无法打开别名用户计数的迭代器。后端错误:标量在输出中有多行。

users = LOAD 'hbase://group'
   USING org.apache.pig.backend.hadoop.hbase.HBaseStorage ('n:user_display_name*', '-limit 10')
   as(display_name);

user_count = FOREACH users GENERATE SIZE(users.display_name);

其思想是将每个Map的计数输出相加,得到总计数。

ny6fqffe

ny6fqffe1#

我必须显式地将display\u name列的类型设置为map[],并更改仅使用列名作为传递给size()的表达式。

users = LOAD 'hbase://group'
   USING org.apache.pig.backend.hadoop.hbase.HBaseStorage ('n:user_display_name*', '-limit 10')
   as(display_name:MAP[]);

user_count = FOREACH users GENERATE SIZE(display_name);

之后我把结果总结如下:

users_group = GROUP user_count ALL;
total = FOREACH users_group GENERATE SUM(user_count);

相关问题