使用用户定义的函数在spark中加入数据集时,需要填充其他信息

时间:2018-04-23 13:02:52

标签: apache-spark join apache-spark-dataset

我正在尝试使用用户定义函数(UDF)在Spark中连接数据集,因为要加入的逻辑很复杂。例如:

我有两个下面提到的bean的数据集“one”和“two”:

class Bean {
   private String id;
   private String name;
}

我的加入条件是:

If ids are equal
   match confidence = 100%
else if names are equal
   match confidence = 50%
else
   do not join the rows

我可以轻松创建用户定义的函数来检查此顺序中的列,但如何为输出连接数据集提供置信度分数?

1 个答案:

答案 0 :(得分:1)

我会做两个连接。

首先在id上添加字段confidence并将其设置为100

然后加入名称,同时添加字段confidence,现在将其设置为50

然后对这些数据集进行联合,按ID分组并保持最高置信度

也许缓存原始数据集,因为它们被使用了两次,便于保存在内存中

这也减少了udfs对连接的需求,这些连接有时计算量很大,因为它们本质上是催化剂的黑盒子