【问题标题】:How to generate tuple in ? operator of pig如何生成元组?猪的操作员
【发布时间】:2013-11-09 15:12:49
【问题描述】:

我的代码如下

temp = foreach requiredData generate (recordType == 3 ? controllingCalledNum : callingPtyNum)as ServiceNumber, (recordType == 3 ? callingPtyNum : controllingCalledNum)as DestinationNumber;

这里我的代码是多余的..

我可以在 '?' 中生成元组吗?操作员并做这样的事情,我可以进一步 FLATTERN

  temp = foreach requiredData generate (recordType == 3 ? (controllingCalledNum,callingPtyNum) : (callingPtyNum,controllingCalledNum))as (ServiceNumber,DestinationNumber);

如果我尝试这样做会出错 请帮帮我。

【问题讨论】:

    标签: hadoop mapreduce hdfs apache-pig


    【解决方案1】:

    使用内置的TOTUPLEUDF:

    temp = foreach requiredData generate FLATTEN(recordType == 3 ? TOTUPLE(controllingCalledNum,callingPtyNum) : TOTUPLE(callingPtyNum,controllingCalledNum))as (ServiceNumber,DestinationNumber); 
    

    【讨论】:

    • 谢谢,但我不能在这里以相同的关系 FLATTEN 原因:org.apache.pig.impl.logicalLayer.parser.ParseException:在第 1 行,列遇到“”==“” 57.期待以下之一:“*” ...
    • 尝试添加更多括号。但无论如何,如果你不能让它工作,你总是可以在以后的关系中FLATTEN。您的问题的答案是TOTUPLE UDF。
    猜你喜欢
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    相关资源
    最近更新 更多