我正在尝试理解Spark是如何工作的,我正在学习PySpark。
我知道Python和Pandas库。
我明白,如果我想用Pandas usin Jumrame读取一个大的cvs文件,它可能无法工作(或者需要很长时间才能读取)。
因此PySpark是一个替代方案。
我读了一些artcicles,我明白要做的第一件事是创建一个SparkContext。
我理解SparkContext将管理集群,集群将读取CSV文件并转换数据。
所以我把这段代码记在一个笔记本里# Import de SparkContext du module pyspark
from pyspark import SparkContext
sc = SparkContext('local')
sc
如果我执行这段代码两次,第二次我会得到一个错误,因为我不能有两个Spark上下文。
为什么我不能有两个sparks上下文?
我想试试这个:# Import de SparkContext du module pyspark
from pyspark import SparkContext
sc1 = SparkContext('local')
sc2 = SparkContext('local')
我有两个不同的名字:sc1和sc2。即使只执行一次,我也有错误。为什么我不能有2个Spark上下文sc1和sc2?
谢谢你
1条答案
按热度按时间lf3rwulv1#
是的,没错,你不能。这就是Spark Session开发的原因。每个JVM只能有一个SparkContext处于活动状态。在创建一个新的SparkContext之前,您必须停止()活动的SparkContext。SparkContext示例不支持跨多个进程共享,PySpark不保证多进程执行。使用线程代替并发处理。
另请参阅以下相关文章:https://spark.apache.org/docs/3.1.1/API/python/reference/API/pyspark.SparkContext.html#:~:text= Only%20one%20SparkContext%20should%20be,not%20execution.
请阅读这篇非常好的文章,以增强您对Spark上下文和Session的了解:
https://medium.com/@akhilasaineni7/exploring-sparkcontext-and-sparksession-8369e60f658e