PySpark基于条件的双DataFrame比对与规则匹配结果实现
PySpark 双DataFrame逐记录快速比对实现
核心需求
在PySpark计算场景下搭建两个同结构DataFrame的记录比对能力:单条主表记录在与参照表记录做匹配计算时,一旦满足比对条件就立刻终止该条记录的迭代流程,直接返回对应匹配结果,不需要全量遍历参照表的所有记录。
示例基础数据
- 主表(第一个DataFrame):包含A、B、C三列,存量记录为
John Doe 23、John Doe 24 - 参照表(第二个DataFrame):包含A、B、C三列,存量记录为
Jane Doe 23、John Doe 24 - 比对规则表:包含Array、Value两列,规则映射关系为:
- Array值为
[1,1,1]时,返回Value=D - Array值为
[0,1,1]时,返回Value=F
- Array值为
实现目标
- 逐字段比对主表单条记录与参照表同名字段的取值,按匹配结果生成二进制数组:字段值一致记为1,不一致记为0,可生成如
[0,1,1]、[1,1,1]形式的比对结果 - 将生成的二进制数组与规则表做匹配校验,命中规则时返回数组对应的Value值
- 最终输出结果包含A、B、C、Value四列,预期输出记录为:
John Doe 23对应返回FJohn Doe 24对应返回D
内容的提问来源于stack exchange,提问作者jvr
相关产品推荐
相关产品推荐

