dremio 的ArpDialect 简单介绍

dremio 的ArpDialect 让我们可以直接基于yaml 文件配置sql 类型以及处理,可以很大程度上简单jdbc 存储插件的开发
核心上还都是扩展的apache calcite sql 方言

核心部分

  • 参考代码
    截取了部分,同时基于yaml 处理了ArpTypeMapper,包含了不少类型映射,比较重要,好多地方都会用到
 
public class ArpDialect extends JdbcDremioSqlDialect {
    private final ArpYaml yaml;
    private final ArpTypeMapper typeMapper;
    private static final Set<SqlKind> MANDATORY_OPERATORS;
    private static final Logger logger;
 
    public ArpDialect(ArpYaml yaml) {
        super(yaml.getMetadata().getName(), yaml.getSyntax().getIdentifierQuote(), yaml.getNullCollation());
        this.yaml = yaml;
        this.typeMapper = new ArpTypeMapper(yaml);
    }
    .....
  • yaml 类型映射

简单参考

 

 

  • ArpTypeMapper 类型的引用
    实际上dremio jdbc 处理部分都依赖了ArpTypeMapper,进行类型转换处理(核心使用建议详细阅读源码)

参考图

 

 

参考实现子类

 

 

说明

dremio 的ArpDialect 实现是很方便的,简化了不少类型处理,我们基于yaml 定义就行了,arp yaml 定义可以参考以下链接

参考资料

https://www.dremio.com/resources/tutorials/how-to-create-an-arp-connector/

posted on 2022-03-04 00:10  荣锋亮  阅读(47)  评论(0编辑  收藏  举报

导航