【发布时间】:2018-11-06 23:17:39
【问题描述】:
我正在使用 CountVectorizerModel 和 MinHashLSH 库编写 Spark Scala 代码,用于在数据场中的两组字符串中查找 Jaccard 相似性。在将其提供给 MinHashLSH 之前,应将其转换为向量。为此,我正在使用 CountVectorizerModel。
问题是我随机设置了 setVocabSize() 和 setMinDF() 之类的值,如下代码所示。我收到一个错误vocabulary size should be > 0. Lower minDF as necessary spark error。
dataframe dfB 的 sn-p 如下所示,其大小根据输入而变化。
+------------+-----------------+
| id1| values1|
+------------+-----------------+
| USA| [Stat]|
| Germany|[Country]|
| Clever_Hans| [Horse]|
| China|[Country]|
| Japan|[Country]|
| Halidae| [Family]|
|Real_Delight| [Horse]|
|Bago_(horse)| [Horse]|
val dfB = hashtoseq1.toDF("id1", "values1")
val cvModel1: CountVectorizerModel = new CountVectorizer()
.setInputCol("values1")
.setOutputCol("features1")
.setVocabSize(100000)
.setMinDF(1)
.fit(dfB)
val kt1 = cvModel1.transform(dfB)
// kt.show
val mh1 = new MinHashLSH()
.setNumHashTables(5)
.setInputCol("features1")
.setOutputCol("hashes1")
val model1 = mh1.fit(kt1)
val dffilter1 = model1.approxSimilarityJoin(kt1, kt1, 0.4)
以上行代码适用于小于 4GB 的文件。对于 17 GB 的文件,它会引发错误。我浏览了 spark 文档和以下链接,但没有帮助我。
Spark MLib Word2Vec Error: The vocabulary size should be > 0
【问题讨论】:
标签: scala apache-spark