首页 > 解决方案 > Spark 上的 Levenshtein 距离算法

问题描述

我从 Hadoop 生态系统开始,我面临一些问题,需要你的帮助。

我有两个 HDFS 文件,需要在第一个的一组列与第二个的另一组列之间执行 Levenshtein 距离。

每天都会使用相当数量的数据执行此过程(第一个文件中的 150M 行与第二个文件中的 11M 行)。

我会很感激有一些指导(代码示例、参考资料等),了解如何从 HDFS 读取我的两个文件执行 Levenshtein 距离(使用 Spark?),如所述并将结果保存在第三个 HDFS 文件中。

非常感谢您提前。

标签: apache-sparkhadoopbatch-processinglevenshtein-distance

解决方案


我猜你有 csv 文件,所以你可以直接读取数据框:

val df1 =  spark.read.option("header","true").csv("hdfs:///pathtoyourfile_1")

spark.sql.functions模块包含函数,deflevenshtein(l: Column, r: Column): Column因此您需要作为参数传递 - 具有字符串类型的数据框列,如果要传递一组列,您可以使用concat('col1,'col2,..)函数连接多个列并将它们传递给前一个函数。如果您有 2 个或更多数据帧,则必须将它们加入一个数据帧,然后执行距离计算。最后,您可以使用将结果保存到 csvdf.write.csv("path")


推荐阅读