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

时间:2020-09-29 22:30:19

标签: apache-spark jdbc airflow databricks delta-lake

我正在尝试使用来自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起)

我想念什么?

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

0 个答案:

没有答案
相关问题