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编辑  收藏  举报

导航