apache phoenix 修改默认的hbase初始化
1、phoenix
phoenix是一个SQL层客户端,使用jdbc的驱动,实现了sql的方式访问hbase。
2、背景
使用phoenix来操作hbase,hbase默认读取classpath下的配置文件,
默认并没有提供一个Configuration来动态配置。
而现在需要根据不同环境设置了不同配置,需要根据当前环境自动切换配置,
每次发布时都需要根据当前环境,copy对应配置文件到项目中。
3、通过读取源码,发现其实有留一个口
org.apache.phoenix.query.ConfigurationFactory接口,提供了getConfiguration方法用来获取链接配置
初始化连接:
PhoenixDriver#getConnectionQueryServices
new ConnectionlessQueryServiceImpl();
new ConnectionQueryServiceImpl();
this.config = HbaseFactoryProvider.getConfigurationFactory.getConfiguration(config);
而ConfigurationFactory接口又是通过InstanceResolver.getSingleton来实例化的,
InstanceResolver#getSingleton
resolveSingleton()
1 private synchronized static <T> T resolveSingleton(Class<T> clazz, T defaultInstance) { 2 ServiceLoader<T> loader = ServiceLoader.load(clazz); 3 // returns the first registered instance found 4 for (T singleton : loader) { 5 return singleton; 6 } 7 return defaultInstance; 8 }
可以看出时通过ServiceLoader.load来加载,如果找不到则使用默认实现。
于是我们可以通过spi技术,实现ConfigurationFactory接口,然后在META-INF/services下配置
org.apache.phoenix.query.ConfigurationFactory,里面写上自己的实现类路径即可
4、原文章链接:https://blog.csdn.net/weixin_34443490/article/details/77446517,如侵删。
posted on 2021-11-29 10:27 Iversonstear 阅读(165) 评论(0) 编辑 收藏 举报