Apache pig 清管器过滤器返回空袋,我可以';不算
我试图计算一个数据集中有多少值与筛选条件匹配,但当筛选条件不匹配时,我遇到了问题 在我的Apache pig 清管器过滤器返回空袋,我可以';不算,apache-pig,Apache Pig,我试图计算一个数据集中有多少值与筛选条件匹配,但当筛选条件不匹配时,我遇到了问题 在我的数据结构中有很多列,但是在这个例子中只有三个使用:键-集合的数据键(不唯一),值-记录的浮点值,标称值-表示标称值的浮点值 我们现在的用例是找到低于标称值10%或更多的值的数量 我在做这样的事情: filtered_data = FILTER data BY value <= (0.9 * nominal_value); filtered_count = FOREACH (GROUP filtered_
数据
结构中有很多列,但是在这个例子中只有三个使用:键
-集合的数据键(不唯一),值
-记录的浮点值,标称值
-表示标称值的浮点值
我们现在的用例是找到低于标称值10%或更多的值的数量
我在做这样的事情:
filtered_data = FILTER data BY value <= (0.9 * nominal_value);
filtered_count = FOREACH (GROUP filtered_data BY key) GENERATE COUNT(filtered_data.value);
DUMP filtered_count;
其结果是:
Two inputs of BinCond must have compatible schemas. left hand side: #1259:bag{} right hand side: #1261:bag{#1260:tuple(cf#1038:float)}
以及:
这将导致空/空结果。按照您现在设置它的方式,您将丢失有关错误值计数为0的任何键的信息。相反,我建议保留所有键,这样您就可以看到计数为0的肯定确认,而不是通过缺席来推断。要做到这一点,只需使用一个指示符,然后
求和
:
data2 =
FOREACH data
GENERATE
key,
((value <= 0.9*nominal_value) ? 1 : 0) AS bad;
bad_count = FOREACH (GROUP data2 BY key) GENERATE group, SUM(data2.bad);
data2=
FOREACH数据
生成
钥匙
((价值)
filtered_count = FOREACH (GROUP filtered_data BY key) GENERATE (filtered_data.value is null ? 0 : COUNT(filtered_data.value));
data2 =
FOREACH data
GENERATE
key,
((value <= 0.9*nominal_value) ? 1 : 0) AS bad;
bad_count = FOREACH (GROUP data2 BY key) GENERATE group, SUM(data2.bad);