如何在Jupyter Notebook中正确设置SparkContext的配置?

3

我是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)

~\anaconda3\lib\site-packages\pyspark\context.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,

~\anaconda3\lib\site-packages\pyspark\context.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")

~\anaconda3\lib\site-packages\py4j\java_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

另外,在系统环境变量中,我添加了JAVA_HOME、SPARK_HOME等路径,但它们似乎无效。


你的代码在我的Jupyter Notebook上运行良好。你能分享一些关于你的Spark/Python安装和版本号的信息吗? - Faraz Mazhar
Spark版本是:2.4.7。 Python版本是:3.9。 - Merima Ceranic
Spark版本为2.4.7。 Python版本为3.9。 此外,在系统变量中,我设置了:HADOOP_HOME、JAVA_HOME、SPARK_HOME、SPARK_LOCAL_IP(我试图解决问题),但它并没有起作用... 我收到了相同的错误消息。这就是我安装和添加的全部内容。 - Merima Ceranic
Spark的安装对于第一次尝试的人来说可能会让人望而却步,因此如果您只需要使用Python的Spark,则建议使用pipconda安装PySpark。这可能会有所帮助。 - Faraz Mazhar
1个回答

0

我认为你的设置方式会导致同时运行多个SparkContext。

尝试使用这个简单的设置:

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试图推断模式有助于加快处理速度。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接