Python Spark中精确的字符串近似

时间:2017-02-08 23:27:13

标签: python apache-spark pyspark spark-dataframe rdd

我正在努力学习火花。我有两个RDD,它们具有以下格式:

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

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

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

1 个答案:

答案 0 :(得分:0)

在司机处收集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)