У меня есть фрейм данных (df) с 1 миллионом строк и двумя столбцами (ID (long int) и описание (String)).После преобразования их в tfidf (с использованием Tokenizer, HashingTF и IDF) фрейм данных df имеет два столбца (идентификатор и особенности (разреженный вектор).
Я вычислил матрицу подобия элемент-элемент, используя функции udf и dot.
Вычисление сходств выполнено успешно.
Однако, когда я вызываю функцию show (), получаю
"поднять EOFError"
Iпрочитайте так много вопросов по этому вопросу, но пока не получили правильного ответа.
Помните, если я применяю свое решение к небольшому набору данных (например, 100 строк), все работает успешно.
это связано с проблемой нехватки памяти?
Я проверил свой набор данных и информацию описания, я не вижу записей с пустыми или неподдерживаемыми текстовыми сообщениями
dist_mat = data.alias("i").join(data.alias("j"), psf.col("i.ID") < psf.col("j.ID")) \
.select(psf.col("i.ID").alias("i"), psf.col("j.ID").alias("j"),
dot_udf("i.features", "j.features").alias("score"))
dist_mat = dist_mat.filter(psf.col('score') > 0.05)
dist_mat.show(1)```
If I removed the last line dist_mat.show(), it is working without error. However, when I used this line, got the error like
.......
```Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded```
...
Here is the part of the error message:
```[Stage 6:=======================================================> (38 + 1) / 39]Traceback (most recent call last):
File "/usr/local/Cellar/apache-spark/2.4.0/libexec/python/lib/pyspark.zip/pyspark/daemon.py", line 170, in manager
File "/usr/local/Cellar/apache-spark/2.4.0/libexec/python/lib/pyspark.zip/pyspark/daemon.py", line 73, in worker
File "/usr/local/Cellar/apache-spark/2.4.0/libexec/python/lib/pyspark.zip/pyspark/worker.py", line 397, in main
if read_int(infile) == SpecialLengths.END_OF_STREAM:
File "/usr/local/Cellar/apache-spark/2.4.0/libexec/python/lib/pyspark.zip/pyspark/serializers.py", line 714, in read_int
raise EOFError
EOFError```