我正在尝试计算别名中所有用户的数量。每行包含一个用户地图。
像这样: ([user_name / 454543 #Paul Kison]) ([user_name / 43433 #Josiel的iPhone,user_name / 34343434 #Jose的iPAD,user_name / 3434645655 #Josiel's])
在整个别名上使用size()时出现此错误: 错误1066:无法为别名user_count打开迭代器。后端错误:标量在输出中有多行。
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);
我们的想法是将每张地图的计数输出相加得到总数。
答案 0 :(得分:1)
我必须显式地将display_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);