Я пишу искробезопасный код Scala, используя библиотеки CountVectorizerModel и MinHashLSH, чтобы найти сходство с Jaccard в двух наборах строк в datafarme. Перед передачей в MinHashLSH его следует преобразовать в векторы. Для этого я использую CountVectorizerModel.
Проблема в том, что я произвольно устанавливаю такие значения, как setVocabSize () и setMinDF (), как показано ниже в коде. Я получаю ошибку vocabulary size should be > 0. Lower minDF as necessary spark error
.
Фрагмент кадра данных dfB выглядит следующим образом, и его размер изменяется в зависимости от ввода.
+------------+-----------------+
| 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)
Приведенный выше строчный код работает для файлов размером менее 4 ГБ. Для 17 ГБ файла его выкидывает ошибка. Я просмотрел искровой документ и следующие ссылки, но мне это не помогло.
Spark MLib Word2Vec Ошибка: размер словаря должен быть> 0