Python 3.x 如何在spark上下文中指定多个jdbc驱动程序?
我有一个从mysql和postgresql读取数据并进行数据处理的应用程序 我有以下初始化spark的函数:Python 3.x 如何在spark上下文中指定多个jdbc驱动程序?,python-3.x,apache-spark,pyspark,Python 3.x,Apache Spark,Pyspark,我有一个从mysql和postgresql读取数据并进行数据处理的应用程序 我有以下初始化spark的函数: def init_spark(): global sc, sqlContext, sqlCtx, sql, spark spark = SparkSession.builder.config( 'spark.driver.extraClassPath', 'path/to/mysql-connector-java.jar' ).getOrCre
def init_spark():
global sc, sqlContext, sqlCtx, sql, spark
spark = SparkSession.builder.config(
'spark.driver.extraClassPath', 'path/to/mysql-connector-java.jar'
).getOrCreate()
sc = spark.sparkContext
sql = spark.sql
atexit.register(lambda: sc.stop())
# for compatibility
sqlContext = spark._wrapped
sqlCtx = sqlContext
print("""Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/__ / .__/\_,_/_/ /_/\_\ version %s
/_/
""" % sc.version)
print("Using Python version %s (%s, %s)" % (
platform.python_version(),
platform.python_build()[0],
platform.python_build()[1]))
print("SparkSession available as 'spark'.")
我有一个运行应用程序的主文件,如下所示:
init_spark()
process_mysql_data()
process_postgresql_data()
在这种情况下,进程\u postgresql\u data()将失败,因为我已经用mysql jar初始化了spark。然而,当我用postgresql jar替换它时,它确实可以工作,但我必须注释掉process\u mysql\u data()函数。我正在寻找一种更有效的方法来实现这一点,使其自动化。只需将所有jar放在同一个字符串中,用
:
分隔,如
spark=SparkSession.builder.config(
“spark.driver.extraClassPath”,
'path/to/mysql连接器java.jar:path/to/postgres连接器java.jar'
).getOrCreate()
您还可以在postgres jar中添加另一个.config()参数:spark=SparkSession.builder\.config('spark.driver.extraClassPath','path/to/mysql connector java.jar)\.config('spark.driver.extraClassPath','path/to/postgres connector java.jar)\.getOrCreate()
它不起作用,因为它验证了类外路径。