处理空数据类型

时间:2018-12-05 22:35:57

标签: apache-pig

我正在使用Piggybank的Over函数来获取行的滞后时间

res= foreach (group table by fieldA) {
Aord = order table by fieldB;
generate flatten(Stitch(Aord, Over(Aord.fieldB, 'lag'))) as (fieldA,fieldB,lag_fieldB) ;}

这正常工作,当我执行转储时,我得到了预期的结果,问题是当我想使用lag_fieldB进行任何比较或转换时,出现数据类型问题。 如果我进行描述,它将返回fieldA: long,fieldB: chararray,lag_fieldB: NULL

我是PIG的新手,但我已经尝试过将其转换为chararray并使用ToString(),并且不断收到如下错误:

错误1052:无法将字节数组转换为字符数组

错误1051:无法转换为字节数组

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

好好看看Over函数的代码,我发现您可以实例化Over类来设置返回类型。对我有用的是:

DEFINE ChOver org.apache.pig.piggybank.evaluation.Over('chararray');
res= foreach (group table by fieldA) {
Aord = order table by fieldB;
generate flatten(Stitch(Aord, ChOver(Aord.fieldB, 'lag'))) as (fieldA,fieldB,lag_fieldB) ;}

现在描述正在告诉我

fieldA: long,fieldB: chararray,lag_fieldB: chararray

我能够按预期使用列,希望这可以为其他人节省一些时间。