Как уменьшить случайную запись, вызванную приближениями в искре? - PullRequest
0 голосов
/ 10 мая 2018

Я использую приближение сходства, чтобы найти сходство Жакара между двумя наборами.

 val dfA = hashtoseq.toDF("id","values") //values is a set of string
 val hashingTF = new HashingTF().setInputCol("values").setOutputCol("features").setNumFeatures(1048576)
 val featurizedData = hashingTF.transform(dfA)


 val mh = new MinHashLSH()
             .setNumHashTables(3)
             .setInputCol("features")
             .setOutputCol("hashes")

val model = mh.fit(featurizedData)

val dffilter = model.approxSimilarityJoin(featurizedData, featurizedData, 0.45)

Я получаю произвольную запись около 270 ГБ для набора данных 16 ГБ и занимает более 3 часов даже на серверах (3 рабочих узла, каждый узел имеет 64 ГБ ОЗУ и 64 ядра).

Я перешел по следующим ссылкам: -
[ LSH Spark навсегда застрял в функции приближенияJoin () , но у меня это не сработало.

Я также просмотрел веб-сайт базы данных, где они сравнили время выполнения с размером данных. Для данных в МБ, т.е. 436 МБ, приблизительно аналогично, требуется 25 минут. Для набора данных, как в ГБ, возникает проблема создания.[https://databricks.com/blog/2017/05/09/detecting-abuse-scale-locality-sensitive-hashing-uber-engineering.html].

Можем ли мы уменьшить эту случайную запись, внеся некоторые изменения в конфигурацию кода / сервера, или возникла проблема с функцией приблизительным сходством?Есть ли другой эффективный способ вычисления сходства по Джакарду на больших наборах данных?

...