apache-spark - Spark 上的 Levenshtein 距离算法
问题描述
我从 Hadoop 生态系统开始,我面临一些问题,需要你的帮助。
我有两个 HDFS 文件,需要在第一个的一组列与第二个的另一组列之间执行 Levenshtein 距离。
每天都会使用相当数量的数据执行此过程(第一个文件中的 150M 行与第二个文件中的 11M 行)。
我会很感激有一些指导(代码示例、参考资料等),了解如何从 HDFS 读取我的两个文件执行 Levenshtein 距离(使用 Spark?),如所述并将结果保存在第三个 HDFS 文件中。
非常感谢您提前。
解决方案
我猜你有 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")