从Airflow到Databricks非托管三角洲湖表的JDBC连接

问题描述

我正在尝试使用来自Airflow的JDBC连接到Databricks。基本上,目的是查询一个delta lake表,该表已在Databricks中注册为非托管表

我已经完成了以下工作。

  1. 阅读并关注此链接Here

2。从Databricks下载了jdbc驱动程序,它基本上是jar文件SparkJDBC42.jar。 3.使用以下设置在气流中建立jdbc连接

Connection url: jdbc:spark://xxxx.azuredatabricks.net:443/default;transportMode=http;ssl=true;httpPath=sql/protocolvl/o/workspaceid/clusterid

Login: token
Password: <token generated from Databricks>

Driver Path: /usr/local/airflow-dags/SparkJDBC42.jar (where I copied the jar after downloading from databricks)

Driver Class: com.simba.spark.jdbc42.Driver 

然后在气流中

from airflow.hooks.jdbc_hook import JdbcHook
hh = JdbcHook(jdbc_conn_id='hiveconn')
sql = """select data from tablename"""
result=hh.get_records(sql=sql)

但是我不断收到错误消息

java.lang.NoclassDefFoundError: com/simba/spark/jdbc42.Driver 

我也尝试过使用jaydebeapi和pyhs2,但无济于事

conn = jaydebeapi.connect(jclassname=jdbc_driver_name,url=str(host),driver_args=[str(login),str(psw)],jars=jdbc_driver_loc)


我尝试将PATH和CLAsspATH变量设置为jar所在的位置(复制下载的jar的路径)。这是Linux(由于Airflow起)

我想念什么?

如有需要,我可以提供更多详细信息。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)