Python Spark 中的精确字符串逼近

Posted

技术标签:

【中文标题】Python Spark 中的精确字符串逼近【英文标题】:Accurate String approximation in Python Spark 【发布时间】:2017-02-08 23:27:13 【问题描述】:

我正在努力学习火花。我有两个 RDD,格式如下:

RDD1
[["James Dean,1"], ["Roger Moore,2"]]

RDD2
[["22,1931,James Deen"], ["23,1927,Roger Moor"]]

现在 RDD2 中的数据可能拼写不正确。我想通过 RDD1,检查每个名称,然后在 RDD2 中查找所有相似的字符串并更正它们的拼写。我该怎么办? 我是 Spark 的新手,所以我完全迷路了。

【问题讨论】:

查找编辑距离。在尝试使用 Spark 之前,请先尝试在 Python(或 Scala)中解决这个问题。 【参考方案1】:

在驱动程序处收集 rdd2 并将其广播回来。请注意,如果您的 rdd2 不适合驱动程序分配的内存,您将遇到 OOM 错误。既然你提到,这是一个学习练习,我想你的 rdds 不是太大。

bc_var = rdd2.collect()  
v = sc.broadcast(bc_var)  

def fix_spelling(row):  
    name, id = row  
    for day, year, old_name in v.value:  
        new_name = compare(name, old_name) # compare name with old_name & determine if old_name needs to be fixed. 
    yield [day, year, new_name, old_name, name]  

rdd.flatMap(fix_spelling)

【讨论】:

以上是关于Python Spark 中的精确字符串逼近的主要内容,如果未能解决你的问题,请参考以下文章

XML文件中的精确字符串搜索?

Python:使用列表和数据框精确匹配单词

ElastiSearch默认分词器

PYTHON博客记录0601

与 Spark 数据框匹配的 Python 字符串

如何解决Python中的函数逼近任务?