Hadoop Pig:单个语句中的多个join语句

Hadoop Pig:单个语句中的多个join语句,hadoop,apache-pig,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,

请帮我把这件事用猪做

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的银行账户,包括账号、银行和分行的详细信息。记录1包含名称,后跟3个按顺序排列的帐号ID(即,它们代表Amit开户的顺序)


如何实现这一点?

您可以将地图展平,然后合并联接将保持顺序


我使用定义的UDF MapToBag解决了这个问题。这使我能够访问record2中的映射值,我使用它与record1中的ID连接。

如果没有UDF,这可能是不可能的,但如果您可以发布示例输入和输出数据,这将有所帮助。我在问题中给出了示例。如果不清楚,请告诉我。这个例子非常抽象。
record1
record2
是否表示模式?
id1
id2
等的可能值是什么。解决此问题的最佳方法是使用输入和输出的小文本文件,目标是编写一个Pig脚本,将输入转换为输出。使用实际数据更新了示例。希望这有帮助。所以,这些数据看起来不像Pig会使用的那种格式,这可能是你在使用它时遇到困难的部分原因。您打算用什么
将数据加载到Pig中?我不知道在编写join语句时如何提到map
key
。依我看,map可以使用MAPNAME#KEY解除引用,其中KEY是常量字符串,但map不能参与join。如果我错了,请纠正我。我已经添加了答案,如果您发现任何错误,请检查并更正。
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"),
    )