Pig:单个语句中的多个连接语句

时间:2014-05-07 08:42:27

标签: hadoop apache-pig

请帮助我在猪身上完成这项工作

Input: 
record1: ("Ammit", 123, 234, 345)
record2: (map : [
    "123" : ("accountNo": 123, "bank": "ICICI Bank", "branch" : "Delhi"),
    "234" : ("accountNo": 234, "bank": "HDFC Bank", "branch" : "Mumbai"),
    "345" : ("accountNo": 345, "bank": "SBI", "branch" : "Bangalore"),
    ])

以上数据代表Amit的银行账户,其中包含accountNo,银行和分行的详细信息。 Record1包含名称,后跟3个帐号id,它们是有序的(即它们代表Amit开立帐户的顺序)

output: ("Amit", 
    "123" : ("accountNo": 123, "bank": "ICICI Bank", "branch" : "Delhi"),
    "234" : ("accountNo": 234, "bank": "HDFC Bank", "branch" : "Mumbai"),
    "345" : ("accountNo": 345, "bank": "SBI", "branch" : "Bangalore"),
    )

我如何实现这一目标?

2 个答案:

答案 0 :(得分:0)

您可以展平地图,然后合并联接将维持订单

https://wiki.apache.org/pig/PigMergeJoin

答案 1 :(得分:0)

我使用定义为here的UDF MapToBag解决了它。这让我可以访问record2中的map的值,我曾经使用它来跟踪record1中的id。