【问题标题】:Handling Null DataType处理空数据类型
【发布时间】:2018-12-05 22:35:56
【问题描述】:

我正在使用 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:无法将 bytearray 转换为 chararray

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

感谢您的帮助

【问题讨论】:

    标签: apache-pig


    【解决方案1】:

    好的,在查看 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
    

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

    【讨论】:

      猜你喜欢
      • 2015-12-13
      • 2012-10-20
      • 2015-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-13
      • 2017-09-25
      • 2019-05-04
      相关资源
      最近更新 更多