【问题标题】:How to set Configuration of SparkContext correctly in Jupyter Notebook?如何在 Jupyter Notebook 中正确设置 SparkContext 的配置?
【发布时间】:2021-03-31 15:27:29
【问题描述】:

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

另外,在系统 ENV 中我添加了 JAVA_HOME、SPARK_HOME.. 但它不起作用。

【问题讨论】:

  • 您的代码在 Jupyter Notebook 上运行良好。你能分享一些关于你的 Spark/Python 安装和版本号的信息吗?
  • Spark 版本为:2.4.7。 Python 版本为:3.9。
  • Spark 版本为 2.4.7。 Python 版本是 3.9。同样在系统变量中,我设置了:HADOOP_HOME、JAVA_HOME、SPARK_HOME、SPARK_LOCAL_IP(我试图解决问题),但它不起作用..我得到了同样的错误消息。这就是我安装和添加的全部内容。
  • 第一次安装 Spark 可能会让人望而生畏,所以如果您只需要使用 Python 的 Spark,那么我建议使用 pipconda 安装 PySpark。这可能会有所帮助。

标签: python apache-spark pyspark jupyter-notebook


【解决方案1】:

我认为您的设置方式最终会同时运行多个 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 尝试推断时相比,它有助于提高处理速度。

【讨论】:

    猜你喜欢
    • 2022-06-16
    • 2019-10-25
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 2021-06-14
    • 1970-01-01
    • 2016-05-30
    • 1970-01-01
    相关资源
    最近更新 更多