我有一个Azure Synapse工作区和一个 * 小 * Spark池。我以这样一种方式编写代码,即连接到同一个spark池的同一个spark notebook将根据我从Synapse管道传递的参数被多次调用。
现在的问题是两个管道同时启动,但notebook活动按顺序运行,导致第二个示例“排队”,如下所示-
我如何使它并行,以便我的笔记本电脑在不同的管道启动的时间?更多信息-
笔记本代码-
import logging
import findspark
findspark.init()
findspark.find()
from pyspark.sql import SparkSession
from data_mesh_etl import table1, table2
spark = SparkSession.builder \
.appName("MyApp") \
.config("spark.jars.packages", "com.microsoft.sqlserver:mssql-jdbc:9.4.1.jre11,org.apache.hadoop:hadoop-azure:3.3.1") \
.getOrCreate()
spark.conf.set('spark.sql.caseSensitive', True)
spark.conf.set('spark.sql.debug.maxToStringFields', 3000)
logger = logging.getLogger()
logger.setLevel(logging.INFO)
if p_table_name == 'table1':
table1.load_table1_data_into_sql(spark, logger)
if p_table_name == 'table2':
table2.load_table2_data_into_sql(spark, logger)
我从pipeline_table1
传递参数p_table_name
,值为table1
,从pipeline_table2
传递参数p_table_name
,值为table2
。当这两个管道同时启动时,我的笔记本不应该有两个并行运行的示例吗?Spark有没有什么并发设置我在这里遗漏了?
有人能帮忙吗?
TIA!
桑吉·凯尔卡
1条答案
按热度按时间8xiog9wr1#
回答我自己的问题在这里-我得到了它的工作,通过简单地增加大小的Spark池。请参阅所附的屏幕截图,其中4个spark作业定义被同时调用,并且它们并行运行。
注意-在这里我已经尝试了spark作业定义,但同样的事情也适用于笔记本电脑。
谢谢大家!
桑吉·凯尔卡