解决ValueError:一度に複数のSparkContextを実行することはできません;既存のSparkContext

1.問題の説明

sparkcontextおよびSparkSessionを作成する場合、sparkクラスターに接続するときにタイトルなどのエラーが報告されますValueError: Cannot run multiple SparkContexts at once; existing SparkContext

from pyspark.sql import SparkSession
from pyspark.sql import functions as F
from pyspark.sql.functions import min, max
from pyspark.sql.functions import monotonically_increasing_id, lit, col, struct
from pyspark.ml.evaluation import RegressionEvaluator
from pyspark.ml.recommendation import ALS
from pyspark.sql.functions import udf
from pyspark import SparkContext, SparkConf
from pyspark.sql.types import StructType, StructField, IntegerType, StringType, ArrayType, DoubleType, FloatType
from pyspark.ml.feature import Word2Vec
import os
import pandas as pd
import numpy as np
from tqdm import tqdm 
import heapq

# 创建 sparkcontext
# sc.stop()
# local[*]时最大线程数
conf = SparkConf().setAppName("data_process_first").setMaster("local[*]")
sc = SparkContext(conf=conf)

# 创建SparkSession,连接spark集群
spark = SparkSession.builder.appName('mypyspark_test1') \
        .master("local")\
        .config("spark.driver.memory","30G")\
        .config("spark.executor.memory","30G")\
        .getOrCreate()

第二に、解決策

sparkContextは以前に開始されているため、繰り返し開始することはできませんSparkConf()。前の文で実行するだけsc.stop()です。つまり、sparkクラスターを閉じます。
ここに画像の説明を挿入
sparkContextは、sparkクラスターの接続を完了し、クラスター上にRDDとブロードキャスト変数を作成できます。作成するときは、少なくともマスターを渡し(上記の栗local[*]は現在のすべてのスレッドで実行されています)、2つのパラメーターをappnameします。

参照

[1] Sparkの起動時のマスターパラメーターとSparkのデプロイ方法

おすすめ

転載: blog.csdn.net/qq_35812205/article/details/124395130