pyspark使用pyodbc连接到sqlserver在集群模式(部署模式)下失败

gg0vcinb  于 2021-05-27  发布在  Spark
关注(0)|答案(0)|浏览(338)

问题1:我有一段代码在spark deploy模式下运行时运行良好:client,但在集群模式下运行同一代码时抛出异常。关于这个问题,我考虑了很多问题,但没有找到解决办法
我使用的是python3.7,spark2.4
我的猜测:在客户端模式下运行时,驱动程序可以使用sql server的odbc驱动程序13,但在运行时执行程序中没有相同的驱动程序,如果我的猜测正确,如何使驱动程序对执行程序可用?
代码:

import pyodbc

def get_sql_server_connection():
    try:
        user_id = "app_server"
        hostname = "hdp-host1"
        conn_driver = "ODBC Driver 13 for SQL Server"
        database = "sales"
        password = "pass1"

        conn = pyodbc.connect('DRIVER={%s};SERVER=%s;UID=%s;PWD=%s') % (
            conn_driver, hostname, database, user_id, password
        )
        return conn
    except Exception as e:
        print("Exception occured while establishing connection to SQL SERVER. stacktrace: \n{}".format(e))

错误:

pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 13 for SQL Server' : file not found (0) (SQLDriverConnect)")

问题2:如何获取它搜索此驱动程序的路径?
问题3:如果可能的话,我如何在spark submit中显式地传递驱动程序?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题