我有一些数据行如下所示:
(1655,var0,var1,nan)
第一列是id,第二列和第三列来自关联。第四列是相关值(来自使用cor函数)。我想过滤这些行。
从apache pig文档中,我认为nan相当于null。因此,我在代码中添加了以下内容:
filter_corr = filter correlation by (corr IS NOT NULL);
这显然不起作用,因为显然pig不以相同的方式处理null和nan。我想知道过滤nan的正确方法是什么,因为清管器文档中不清楚。
谢谢!
3条答案
按热度按时间busg9geu1#
你可以把数据作为一个整体读进去
chararray
行和使用自定义项来分析行。我做了一个数据集,看起来像这样创建自定义项
然后在Pig壳里
输出
deyfvvtc2#
我采用了以下解决方案:
我重命名了列,并将数据类型从chararray重新分配为double。
我很感激您的回答,但由于我使用的ui(cloudera)的限制,我不能在原型制作过程中使用udf
mbjcgjjk3#
最终,您可以在模式中将列指定为chararray,并使用
not matches 'NaN'
或者,如果您想用其他内容替换您的nan,您可以像前面一样将字符放在模式中,然后:Data = FOREACH Data GENERATE ..., (correlation matches 'NaN' ? 0 : (double) correlation), ...
我希望这能有所帮助,祝你好运;)