GCP Dataproc Jupyter中创建新Spark Context后无法正常使用的问题
解决GCP Dataproc Jupyter Notebook中Spark Context更新后
spark对象失效问题 问题核心是:默认的spark(SparkSession对象)仍关联着已停止的旧SparkContext,仅重新创建SparkContext无法让spark指向新的上下文,需同步创建新的SparkSession绑定新Context。
正确操作步骤:
停止旧的SparkContext和SparkSession
不仅要停止SparkContext,还要停止对应的SparkSession,彻底切断旧绑定关系:import pyspark # 停止旧的SparkSession和SparkContext spark.stop() sc.stop()配置新参数并创建全新上下文
先定义包含内存优化参数的配置,再依次创建新的SparkContext和SparkSession:# 配置Spark参数,可按需添加更多内存相关项 conf = pyspark.SparkConf().setAll([ ('spark.driver.maxResultSize', '8g'), ('spark.driver.memory', '16g'), # 按需调整Driver内存上限 ('spark.executor.memory', '16g') # 按需调整Executor内存上限 ]) # 创建新的SparkContext sc = pyspark.SparkContext(conf=conf) # 基于新Context创建SparkSession spark = pyspark.sql.SparkSession(sc)验证新上下文有效性
执行读取操作测试:data = spark.read.parquet('数据存储桶链接')
额外提示:
- 若仅需调整Spark配置,更推荐在启动Dataproc集群时通过集群初始化参数设置(如
--properties spark.driver.maxResultSize=8g),避免在Notebook中重启上下文的操作风险。 - 重启上下文后,所有之前缓存的RDD、DataFrame数据都会被清除,需重新加载或计算。
内容的提问来源于stack exchange,提问作者Curl
相关产品推荐
相关产品推荐

