【发布时间】:2019-06-06 21:30:47
【问题描述】:
我正在使用 LSH 算法解决重复文档检测问题。为了处理大规模数据,我们使用了 spark。
我有大约 300,000 个文档,每个文档至少 100-200 个单词。在 Spark 集群上,这些是我们在数据帧上执行的步骤。
- 运行 Spark ML 管道以将文本转换为标记。
pipeline = Pipeline().setStages([
docAssembler,
tokenizer,
normalizer,
stemmer,
finisher,
stopwordsRemover,
# emptyRowsRemover
])
model = pipeline.fit(spark_df)
final_df = model.transform(spark_df)
- 对于每个文档,使用 datasketch(https://github.com/ekzhu/datasketch/) 库获取 MinHash 值并将其存储为新列。
final_df_limit.rdd.map(lambda x: (CalculateMinHash(x),)).toDF()
第二步失败,因为 spark 不允许我们将自定义类型值存储为列。 Value 是 MinHash 类的对象。
有谁知道如何将 Minhash 对象存储在数据框中?
【问题讨论】: