繁体   English   中英

如何使用joinWith联接两个以上的数据集?

[英]How do I use joinWith to join more than 2 datasets?

我想实现以下目标:

x.joinWith(y, x(id) === y(fid), "left_outer")
  .joinWith(z, x(id) === z(fid))
  .map(case {(x, y, z) => combineXYZ(x, y, z)})

当使用joinWith ,得到的是Tuple2的新数据集: (x, y) 因此,列名称为_1_2

因此,当您进行第二次连接时,需要从元组而不是源数据集中的一个引用列名。 像那样 :

x.joinWith(y, x(id) === y(fid), "left_outer").joinWith(z, $"_1.id" === z(fid))

现在,您得到的是一个tuple2,其中第一个元素也是一个元组: ((x, y), z) 因此,您必须将地图绘制为:

.map(case {((x, y), z) => combineXYZ(x, y, z)})

这应该工作。 请注意,如果您不想使用$"_1.id ,这是完全可以理解的,则可以在首次加入后进行映射,以创建除tuple2之外的新对象,以获得正确的列名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM