多表关联:和单表关联类似,也是通过对原始数据进行一定的处理, 从其中挖掘出目标信息。
问题描述
输入是两个文件,一个代表工厂表,包含工厂名列和地址编号列;另一个代表地址表包地址名列和地址编号列。要求从输入数据中找出工厂名和地址名的对应关系,输出“工厂名——地址名”表。
输入文件:
输出文件:
设计思路
多表关联和单表关联相似,都类似于数据库中的自然连接。相比单表关联,多表关联的左右表和连接列更加清楚。 所以可以采用和单表关联的相同的处理方式, map 识别出输入的行属于哪个表之后,对其进行分割,将连接的列值保存在 key 中, 另一列和左右表标识保存在 value 中然后输出。reduce 拿到连接结果之后,解析 value 内容,根据标志将左右表内容分开存放,然后求笛卡尔积,最后直接输出。
这个实例的具体分析参考昨天发送的单表关联实例。