我正在尝试使用用户定义函数(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
我可以轻松创建用户定义的函数来检查此顺序中的列,但如何为输出连接数据集提供置信度分数?
答案 0 :(得分:1)
我会做两个连接。
首先在id上添加字段confidence
并将其设置为100
然后加入名称,同时添加字段confidence
,现在将其设置为50
然后对这些数据集进行联合,按ID分组并保持最高置信度
也许缓存原始数据集,因为它们被使用了两次,便于保存在内存中
这也减少了udfs对连接的需求,这些连接有时计算量很大,因为它们本质上是催化剂的黑盒子