我正在尝试使用来自Airflow的JDBC连接到Databricks。基本上,目的是查询一个delta lake表,该表已在Databricks中注册为非托管表
我已经完成了以下工作。
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起)
我想念什么?
如有需要,我可以提供更多详细信息。