Не удается собрать данные после сопоставления функции с PD-парком RDD - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть один столбец pyspark.sql.dataframe.DataFrame (comments), это выглядит так:

+--------------------+
|             comment|
+--------------------+
|                 nan|
|                 nan|
|                 nan|
|So far it has per...|
|I purchased it fo...|
+--------------------+

Непосредственно из этого фрейма данных я отобразил функцию следующим образом:

tokens_rdd = comments.select('comment').rdd.flatMap(lambda x: word_tokenizer(x))

После этого я преобразовал СДР обратно во фрейм данных следующим образом:

tokens = sq.createDataFrame(tokens_rdd,comments.schema)

После этого я пытаюсь показать первые пять строк фрейма данных, но получаю следующую ошибку:

Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.runJob.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 2.0 failed 1 times, most recent failure: Lost task 0.0 in stage 2.0 (TID 3, localhost, executor driver): java.net.SocketException: Connection reset

Я использую pyspark 2.4.0 локально, и я сопоставляю функцию:

def word_tokenizer(x):
    import nltk
    lowerW = x.lower()
    return nltk.word_tokenize(x)

Я пробовал несколько способов конвертировать СДР в DF, но у меня естьне удалось показать данные, может быть, кто-то может помочь мне разобраться в этом.

Заранее спасибо.

1 Ответ

0 голосов
/ 28 февраля 2019

Существует несколько вспомогательных функций при конвертации в / из RDD, Dataframe с и Dataset с.Я полагаю, что вы пытались превратить локальные списки в Dataframe с.

Если у вас уже есть RDD, то вы сможете использовать метод .toDF().

При условии, что nltk.word_tokenize(x) возвращает один список строк токенов:

tokens_df = tokens_rdd.toDF("tokens")

должно быть всем, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...