#python #apache-spark #pyspark #jupyter-notebook
#python #apache-spark #pyspark #jupyter-notebook
Вопрос:
Я новичок в spark, и я пытаюсь настроить SparkContext, но, к сожалению, я получил сообщения об ошибках..
Я написал этот код:
from pyspark import SparkConf,SparkContext
from pyspark.streaming import StreamingContext
from pyspark.sql import Row,SQLContext
import sys
import requests
# create spark configuration
conf = SparkConf()
conf.setAppName("TwitterStreamApp")
# create spark context with the above configuration
sc = SparkContext(conf=conf)
И я получил эту ошибку:
Py4JError Traceback (most recent call last)
<ipython-input-97-b0f526d72e5a> in <module>
1 # create spark context with the above configuration
----> 2 sc = SparkContext(conf=conf)
~anaconda3libsite-packagespysparkcontext.py in __init__(self, master, appName, sparkHome, pyFiles, environment, batchSize, serializer, conf, gateway, jsc, profiler_cls)
133 # If an error occurs, clean up in order to allow future SparkContext creation:
134 self.stop()
--> 135 raise
136
137 def _do_init(self, master, appName, sparkHome, pyFiles, environment, batchSize, serializer,
~anaconda3libsite-packagespysparkcontext.py in _do_init(self, master, appName, sparkHome, pyFiles, environment, batchSize, serializer, conf, jsc, profiler_cls)
211 self.pythonVer = "%d.%d" % sys.version_info[:2]
212
--> 213 if sys.version_info < (3, 6):
214 with warnings.catch_warnings():
215 warnings.simplefilter("once")
~anaconda3libsite-packagespy4jjava_gateway.py in __getattr__(self, name)
1528 answer, self._gateway_client, self._fqn, name)
1529 else:
-> 1530 raise Py4JError(
1531 "{0}.{1} does not exist in the JVM".format(self._fqn, name))
1532
Py4JError: org.apache.spark.api.python.PythonUtils.isEncryptionEnabled does not exist in the JVM
Кроме того, в system ENV я добавил JAVA_HOME, SPARK_HOME .. но он не работает.
Комментарии:
1. Для меня ваш код отлично работает в Jupyter Notebook. Не могли бы вы поделиться некоторой информацией о вашей установке Spark / Python и номере версии.
2. Версия Spark: 2.4.7. Версия Python: 3.9.
3. Версия Spark 2.4.7. Версия Python 3.9. Также в системных переменных я установил: HADOOP_HOME, JAVA_HOME, SPARK_HOME, SPARK_LOCAL_IP (я пытался решить проблему), но это не работает.. Я получил то же сообщение об ошибке. И это все, что я установил и добавил.
4. Установка Spark может быть сложной в первый раз, поэтому, если вам нужна только Spark с Python, я бы посоветовал установить PySpark с
pip
помощью orconda
. Это может помочь.
Ответ №1:
Я думаю, что при настройке вы в конечном итоге запускаете несколько SparkContexts одновременно.
Попробуйте вместо этого эту простую настройку:
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('TwitterStreamApp').getOrCreate()
если вы НЕ выполняете потоковую передачу, предполагая, что вы читаете csv-файл с заголовками
staticDF = spark.read.csv('source/file/path/here', header = True, inferSchema = True)
если вы выполняете потоковую передачу, повторите формат csv
streamingDF = spark.readStream
.schema(provide schema here)
.option('....') // whatever your options are
.csv('source/file/path/here')
Возможно, вам захочется привыкнуть к идее предоставления или построения схемы при чтении ваших данных, это повышает скорость обработки, чем когда spark пытается ее вывести.