Pyspark levenshtein 连接错误
Pyspark levenshtein Join error
我想执行基于 Levenshtein 距离的连接。
我有 2 个 table:
Data
: 这是HDFS文件存储库中的CSV。其中一列是 Disease description
,15K 行。
df7_ct_map
: table 我从 Hive 呼叫。其中一列是 Disease Indication
,20K 行。
我正在尝试通过将每个描述与指示相匹配(它们是疾病的文本描述)来加入两个 table。理想情况下,它们需要相同,但如果两个文本不同,我希望 select 匹配包含最大常用词数的文本。
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 包吗?如果是,怎么做?
不是使用这个加入,而是另一个选项如下
newDF=df1.join(df2,levenshtein(df1['description'], df2['description']) < 3)
这将允许在连接 2 个数据帧时最多有 2 个字符的差异。
这可能有帮助。
我想执行基于 Levenshtein 距离的连接。
我有 2 个 table:
Data
: 这是HDFS文件存储库中的CSV。其中一列是 Diseasedescription
,15K 行。df7_ct_map
: table 我从 Hive 呼叫。其中一列是 DiseaseIndication
,20K 行。
我正在尝试通过将每个描述与指示相匹配(它们是疾病的文本描述)来加入两个 table。理想情况下,它们需要相同,但如果两个文本不同,我希望 select 匹配包含最大常用词数的文本。
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 包吗?如果是,怎么做?
不是使用这个加入,而是另一个选项如下
newDF=df1.join(df2,levenshtein(df1['description'], df2['description']) < 3)
这将允许在连接 2 个数据帧时最多有 2 个字符的差异。
这可能有帮助。