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

Posted

技术标签:

【中文标题】使用用户定义的函数在 spark 中加入数据集时需要填充其他信息【英文标题】:Need additional information to be populated while joining datasets in spark using user defined function 【发布时间】:2018-04-23 13:02:52 【问题描述】:

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

我有以下提到的 bean 的两个数据集“一”和“二”:

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】:

我会做两个连接。

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

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

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

可能缓存原始数据集,因为它们被使用了两次,方便保存在内存中

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

【讨论】:

这有用吗?否则请发布一些示例数据

以上是关于使用用户定义的函数在 spark 中加入数据集时需要填充其他信息的主要内容,如果未能解决你的问题,请参考以下文章

Spark:在 UDF 或映射函数中加入

在 Spark 中加入数据框

在 Spark 中加入数据集

在 Spark 中加入倾斜的数据集?

在 Spark Scala 中加入后创建嵌套数据

如何在JAVA中加入没有重复列的Spark数据框