首页 > 其他分享 >dremio jdbc 插件时间增量处理的一些问题

dremio jdbc 插件时间增量处理的一些问题

时间:2024-01-12 14:44:41浏览次数:38  
标签:插件 jdbc timestamp data dremio 增量 sensor store

dremio 支持一些增量数据处理能力,同时可以选择增量字段,目前dremio 是提供了一些实现,比如反射数据基于iceberg对于增量
可以是不同的数据源(jdbc 的,文件系统的,iceberg 的),日常大家可能选择基于时间戳的(尤其业务系统是基于时间标识的append 类型的)
对于时间类型(timestamp),不同数据库会有不同的精度支持,比如mysql 也支持精度,postgres 也是支持精度的

timestamp问题

目前postgres 对于timestamp 默认的精度是6位(可以自己调整),但是默认dremio 对于timestamp 的处理精度位3,所以如果对于pg append 类型的表进行
增量处理就会发现数据有问题(数据会重复)

  • 精度检查
 
SELECT * FROM INFORMATION_SCHEMA.COLUMNS

解决方法

  • 数据distinct 处理
    对于增量之后的数据,使用distinct,可以规避重复数据
  • 统一精度规避数据问题
    将source 的timestamp 精度类型调整为3

dremio 增量一个简单处理

  • 参考sql 格式
    如下会包含一个$_dremio_$_update_$ 的增量字段,后续查询会使用此字段进行增量查询

一个int 类型的

 
"sensor_data_store"."q3", "sensor_data_store"."t", "sensor_data_store"."electricquantitypercentage", "sensor_data_store"."versionnumber" COLLATE "C", "sensor_data_store"."id" AS "$_dremio_$_update_$" FROM "public"."sensor_data_store" WHERE ("sensor_data_store"."id" > 309371)","e1 [main]"

一个timestamp 类型的

"sensor_data_store"."versionnumber" COLLATE "C", "sensor_data_store"."ingress_data" AS "$_dremio_$_update_$" FROM "public"."sensor_data_store" WHERE ("sensor_data_store"."ingress_data" > TIMESTAMP '2024-01-06 06:55:47.617')","e3

dremio 反射存储的iceberg 元数据信息

说明

实际上精度的问题在不少系统都会有类似的问题,只是我们很多时候应该注意下,否则会有莫名的问题

参考资料

https://docs.dremio.com/current/sonar/reflections/refreshing-reflections
https://docs.dremio.com/cloud/reference/sql/information-schema/columns/#fields
com/dremio/exec/store/iceberg/IncrementalReflectionByPartitionUtils.java
com/dremio/service/reflection/IncrementalUpdateServiceUtils.java

标签:插件,jdbc,timestamp,data,dremio,增量,sensor,store
From: https://www.cnblogs.com/rongfengliang/p/17960740

相关文章

  • dremio+nessie+dbt+ cube.js 实现简单数据服务
    以前我简单写过关于dremio与cube.js集成的,随着dremio官方自己维护了一个dbt的adapter以及nessie方便的类似git的多版本元数据服务的提供,将这几个集成在一起是一个很不错的选择,尤其是希望实现自己的headlessbi服务,同时利用dbt强大的数据建模能力,可以实现数据模型开发的工......
  • 26-网络插件:Kubernete 搞定网络原来可以如此简单?
    通过之前的学习,相信你对Kubernetes越来越熟悉了。理论上,Kubernetes可以跑在任何环境中,比如公有云、私有云、物理机、虚拟机、树莓派,但是任何基础设施(Infrastructure)对网络的需求都是最基本的。网络同时也是Kubernetes中比较复杂的一部分。我们今天就来聊聊Kubernetes中的......
  • 09-存储类型:如何挑选合适的存储插件?
    在以前玩虚拟机的时代,大家比较少考虑存储的问题,因为在通过底层IaaS平台申请虚拟机的时候,大多数情况下,我们都会事先预估好需要的容量,方便虚拟机起来后可以稳定的使用这些存储资源。但是容器与生俱来就是按照可以“运行在任何地方”(runanywhere)这一想法来设计的,对外部存储有着天......
  • Cannot load driver class: oracle.jdbc.OracleDriver
    错误信息Causedby:java.lang.IllegalStateException:Cannotloaddriverclass:oracle.jdbc.OracleDriver atorg.springframework.util.Assert.state(Assert.java:97)~[spring-core-5.2.9.RELEASE.jar:5.2.9.RELEASE] atorg.springframework.boot.autoconfigure.jdbc.Da......
  • 【MITK框架】如何创建插件Plugin
    以创建org.mitk.example.gui.xxxxx为例1、修改D:\0_MITK\MITK\Examples\Plugins\PluginList.cmake添加org.mitk.example.gui.xxxxx:ONset(MITK_EXAMPLE_PLUGINSorg.mitk.example.gui.minimalapplication:ONorg.mitk.example.gui.customviewer:ONorg.mitk.example.gui......
  • 对比Spring Boot中的JdbcClient与JdbcTemplate
    本文我们一起看看SpringBoot中JdbcClient和JdbcTemplate之间的差异。以下内容使用的Java和SpringBoot版本为:Java21SpringBoot3.2.1假设我们有一个ICustomerService接口:publicinterfaceICustomerService{List<Customer>getAllCustomer();Optio......
  • mysql_native_password 身份验证插件在未来版本中移除
    自MySQL8.0.34起,mysql_native_password身份验证插件已被弃用,并可能在MySQL的未来版本中移除。移除意味着:Javajdbc配置文件以及后端大数据的账号密码,必须更改为caching_sha2_password认证模式,否则无法连接MySQL数据库。如果业务系统今后升级MySQL8.0,这块需要加以适配。如果......
  • 免费IDEA插件推荐:Apipost-Helper
    IDEA插件市场中的API调试插件不是收费(FastRequest)就是不好用(apidoc、apidocx等等)今天给大家介绍一款国产的API调试插件:Apipost-Helper,完全免费且好看好用!这款插件由Apipost团队开发的,其官方介绍是:用于IDEA项目快速生成API文档,快速查询接口、接口代码功能,并支持在IDEA中进行API调......
  • dremio nessie 集成玩法
    昨天我简单写了dremio集成nessie的玩法,实际上dremio与nessie的集成可以分为两大类,一类是使用nessie做为catalog服务(当然也是支持写入iceberg的),一类是基于外部工具(spark,flink)使用nessie做为metadatastorage然后dremio查询参考玩法图外部工具类的catalog类的此时ness......
  • IDEA中怎么用Postman?这款插件你试试
    Postman是大家最常用的API调试工具,那么有没有一种方法可以不用手动写入接口到Postman,即可进行接口调试操作?今天给大家推荐一款IDEA插件:ApipostHelper,写完代码就可以调试接口并一键生成接口文档!而且还可以根据已有的方法帮助您快速生成url和params。更重要的是他完全免费!Apipost......