【发布时间】:2018-01-24 15:08:28
【问题描述】:
我想根据 Levenshtein 距离执行连接。
我有两张桌子:
-
Data:这是 HDFS 文件存储库中的 CSV。其中一列是疾病description,15K 行。 -
df7_ct_map:我从 Hive 调用的一张桌子。其中一列是疾病Indication,20K 行。
我正在尝试通过将每个描述与指示相匹配来连接两个表(它们是疾病的文本描述)。理想情况下,它们需要相同,但如果两个文本不同,我希望选择包含最多常用词的匹配文本。
from pyspark.sql.functions import levenshtein
joinedDF = df7_ct_map.join( Data, levenshtein(df7_ct_map("description"),
Data("Indication")) < 3)
joinedDF.show(10)
问题是Data 是DataFrame,这就是我收到以下错误的原因:
TypeError: 'DataFrame' object is not callable
TypeError Traceback (most recent call last)
in engine
----> 1 joinedDF = df7_ct_map.join( Data, levenshtein(df7_ct_map("description"), Data("Indication")) < 3)
TypeError: 'DataFrame' object is not callable
一些建议?我可以使用 Fuzzywuzzy 包吗?如果有,怎么做?
【问题讨论】:
-
应该是
df7_ct_map["description"]而不是df7_ct_map("description")。另一个也一样:Data["Indication"]不是Data("Indication")。我也会推荐stackoverflow.com/q/43938672/8371915 -
谢谢!我会尝试从您的建议中复制一些最佳实践
标签: python pyspark apache-spark-sql levenshtein-distance fuzzywuzzy