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します。