升级DBR与NiFi后,无需自定义HiveConnectionPool的Databricks取数方案
从Apache NiFi提取Databricks数据的推荐方案(替代弃用的HiveQL处理器)
针对你升级DBR 14.3和NiFi 1.27后遇到的HiveQL处理器弃用问题,以下是无需自行编写连接池的推荐方案:
1. 使用JDBC处理器(通用且稳定)
- 配置
DBCPConnectionPool连接池:- 驱动类设置为
com.databricks.client.jdbc.Driver - JDBC URL格式:
jdbc:databricks://<你的Databricks实例地址>:443/default;transportMode=http;ssl=1;httpPath=<SQL仓库的HTTP路径>;AuthMech=3;UID=token;PWD=<你的个人访问令牌>
- 驱动类设置为
- 使用
ExecuteSQL处理器执行查询:- 关联上述配置好的DBCP连接池,直接编写SQL语句即可提取数据,功能完全替代原有的SelectHiveQL/SelectHive3QL处理器。
2. 使用NiFi官方Databricks专用处理器
NiFi 1.27提供了适配Databricks的原生处理器,无需手动维护连接池:
- 配置
DatabricksSQLConnectionService:- 填入Databricks实例URL、SQL仓库的HTTP路径、个人访问令牌,系统会自动管理连接。
- 使用
QueryDatabricksSQL处理器:- 关联上述连接服务,输入要执行的SQL查询,处理器会直接返回结构化查询结果,适配最新DBR版本的特性。
3. 调用Databricks SQL REST API(灵活但需额外处理)
如果需要更定制化的逻辑,可通过InvokeHTTP处理器调用API:
- 构造POST请求到
/api/2.0/sql/statements端点,请求体携带SQL查询内容,请求头添加Authorization: Bearer <你的访问令牌> - 对返回的JSON结果,使用
SplitJSON、ConvertJSONToAvro等处理器解析和转换数据。不过这种方式需要处理API分页和结果格式,适合有定制需求的场景。
注意事项
- 使用JDBC方式时,需确保NiFi环境中已上传Databricks JDBC驱动包(可通过NiFi UI的
External Resources功能添加)。 - 个人访问令牌需具备
sql_select等必要权限,确保能执行查询操作。
内容的提问来源于stack exchange,提问作者Vijay Kumar
相关产品推荐
相关产品推荐

