2013-11-09 67 views
1
的操作

我的代碼如下如何生成元組?豬

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

這裏我的代碼是reduntant ..

我可以生成的元組裏「?」運營商和做這樣的事情,如果它我嘗試做這樣的 請幫助我,我可以進一步FLATTERN

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

我得到的錯誤。

回答

0

使用內置TOTUPLE UDF:

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

感謝 ,但我不能在同一關係這裏 FLATTEN產生的原因:org.apache.pig.impl.logicalLayer.parser.ParseException:遇到「 「==」「在第1行第57列。 期待以下之一: 」*「... – sudheer

+0

嘗試添加更多括號。但無論如何,如果你無法實現它的功能,你總是可以在後面的關係中使用FLATTEN。你的問題的答案是'TOTUPLE' UDF。 –

+0

耶同樣也謝謝你 – sudheer