Примечание: не все DataFrame, а указанные c (см. Код ниже)
Я могу начать сеанс Spark с jupyter. Я даже могу создать DataFrame, используя sqlContext.createDataFrame
, но всякий раз, когда я пытаюсь выполнить операцию над DataFrame, такую как .take
или .head
, она завершается неудачей, и я получаю ошибку, подобную этой:
Py4JJavaError: An error occurred while calling o212.collectToPython.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 5.0 failed 1 times, most recent failure: Lost task 0.0 in stage 5.0 (TID 5, localhost, executor driver): org.apache.spark.api.python.PythonException: Traceback (most recent call last):
File "C:\Users\khnajm\Spark\spark-2.4.4-bin-hadoop2.7\python\lib\pyspark.zip\pyspark\worker.py", line 377, in main
File "C:\Users\khnajm\Spark\spark-2.4.4-bin-hadoop2.7\python\lib\pyspark.zip\pyspark\worker.py", line 372, in process
File "C:\Users\khnajm\Spark\spark-2.4.4-bin-hadoop2.7\python\lib\pyspark.zip\pyspark\serializers.py", line 393, in dump_stream
Мои переменные окружения JAVA_HOME
, SPARK_HOME
, HADOOP_HOME
и PATH
установлены правильно. Я также скачал winutils.exe и сохранил в %SPARK_HOME%\bin
Я использую jdk1.8.0_231 и spark-2.4.4-bin-hadoop2.7 с winutils для hadoop2.7. Я попытался установить PYSPARK_PYTHON
, PYSPARK_DRIVER_PYTHON
и PYSPARK_DRIVER_PYTHON_OPTS
, но, похоже, они ничего не изменили.
Я могу запустить .take
на более простом DataFrame, но когда я его запускаю на wordsDataFrame
ниже он завершается ошибкой, несмотря на то, что имеет тип DataFrame.
#Tokenize the text in the text column
tokenizer = Tokenizer(inputCol="SMS", outputCol="words")
wordsDataFrame = tokenizer.transform(data_df)
#remove 20 most occuring documents, documents with non numeric characters, and documents with <= 3 characters
cv_tmp = CountVectorizer(inputCol="words", outputCol="tmp_vectors")
cv_tmp_model = cv_tmp.fit(wordsDataFrame)