如何解决如何在Spark上下文中指定多个jdbc驱动程序?
我有一个应用程序,可以从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'
).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()
在这种情况下, process_postgresql_data()将失败,因为我已使用mysql jar初始化spark。但是,当我用postgresql jar替换它时,它确实可以工作,但是我必须注释掉 process_mysql_data()函数。我正在寻找一种更有效的方法来实现这一目标,以使其自动化。
解决方法
只需将所有罐子放入相同的字符串中,并用:
分隔即可,例如
spark = SparkSession.builder.config(
'spark.driver.extraClassPath','path/to/mysql-connector-java.jar:path/to/postgres-connector-java.jar'
).getOrCreate()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。