基于Quarkus的Apache Camel Drill组件凭证传递及配置问题
Apache Camel + Drill 连接Hive传递凭证的实现方案(Quarkus环境)
Camel Drill组件本身未直接暴露凭证配置入口,可通过自定义绑定带凭证的Drill数据源的方式实现,无需在组件URI中明文传递敏感信息,适配Quarkus运行环境的具体实现步骤如下:
1. 引入必要依赖
Quarkus环境中优先使用官方Camel扩展,同时引入和你的Drill集群版本匹配的JDBC驱动,Maven依赖参考:
org.apache.camel.quarkus:camel-quarkus-drill:Camel Drill组件的Quarkus扩展org.apache.drill.exec:drill-jdbc-all:Drill官方JDBC全量驱动包
2. 配置带凭证的Drill数据源
推荐直接通过Quarkus配置文件声明数据源,无需硬编码逻辑,在application.properties中添加如下配置:
# Drill数据源基础配置 quarkus.datasource.drill.jdbc.url=jdbc:drill:drillbit=<你的Drill节点地址>:31010 quarkus.datasource.drill.username=<Drill/Hive用户名> quarkus.datasource.drill.password=<对应密码> quarkus.datasource.drill.db-kind=other quarkus.datasource.drill.jdbc.driver=org.apache.drill.jdbc.Driver
如果你的Drill开启了Kerberos等特殊认证,直接把认证参数拼接在JDBC URL末尾即可,示例:jdbc:drill:drillbit=xxx:31010;auth=kerberos;kerberos_principal=xxx;kerberos_keytab=/path/to/keytab
3. Camel路由中引用数据源
Drill组件支持直接传入预配置的数据源,不需要在URI中重复填写连接、凭证信息,路由示例:
from("direct:queryHive") // 设置查询语句,指定Hive存储插件下的库表 .setHeader("CamelDrillQuery", constant("SELECT * FROM hive.库名.表名 LIMIT 10")) // 引用上一步配置的drill数据源 .to("drill:?dataSource=#drill") .log("查询返回结果:${body}");
注意事项
- 提前确认Drill集群的Hive存储插件配置正常,你使用的凭证有对应Hive表的查询权限
- 若使用Quarkus原生编译模式,需要把Drill JDBC驱动的核心类添加到反射豁免列表,避免运行时报类找不到错误
内容的提问来源于stack exchange,提问作者SlowTree
相关产品推荐
相关产品推荐

