我是pyspark的新手,在执行作业时遇到了一些问题。
我正在将作业发送到具有正确配置的2个执行程序的独立spark实例,有时两个执行程序开始并行工作并正确使用分配的资源,并且Job成功完成。但是有时,只有一个执行程序开始工作,而另一个则在提交最初执行得很好的SAME作业时保持闲置状态。
什么可能是每两个执行者都不执行其功能的问题。
下面是我的代码。
from flask import Blueprint
import time
from pyspark import SparkContext
from pyspark import SQLContext
import pyspark
jl = Blueprint('HelloWorld', __name__, url_prefix='/')
@jl.route('/join')
def join_logic():
conf = pyspark.SparkConf().setAll([('spark.executor.memory', '24g'), ('spark.executor.cores', '3'), ('spark.worker.memory', '56g'), ('spark.driver.memory','24g'), ('spark.worker.cores', '6'), ('spark.network.timeout', '10000001'), ('spark.executor.heartbeatInterval', '10000000')])
sc = SparkContext("spark://X.X.X.X:7077","JOB_1", conf=conf)
sqlContext = SQLContext(sc)
df = sqlContext.read.format('jdbc').options(
url='jdbc:mysql://x.x.x.x/schemaName?autoReconnect=true&useSSL=false',
driver='com.mysql.jdbc.Driver',
dbtable='table_name',
user='root',
password='xxxx').load()
df1 = sqlContext.read.format('jdbc').options(
url='jdbc:mysql://X.X.X.X/schema_Name?autoReconnect=true&useSSL=false',
driver='com.mysql.jdbc.Driver',
dbtable='Table_Name',
user='root',
password='xxxx').load()
result = df.join(df1, df.column == df1.column, 'left')
res = result.count()
sc.stop()
return str(res);