dremio FormatPlugin 设计上的一些限制-基于easy format 框架
对于FormatPlugin 我以前也零碎的介绍过一些,会和FormatCreator, FormatMatcher 存储插件等都有一些关系,核心主要还是对于
文件系统的格式处理,今天我在基于easy format 框架 自定义开发jsonline 格式化插件的时候发现目前dremio 对于支持的文件格式在系统中硬编码的,改动起来需要处理的地方比较多,以下简单说明下
基于easy format 框架FormatPlugin 的一些限制
- 命名
自己开发的格式化插件命名上比较重要,而且不能与以前的进行重复,重复了不会进行处理 - 处理的文件格式
目前支持的文件格式比较固定,尽管我们可以所以去写,但是实际执行以及处理上dremio 还会进行一次判断,会造成我们自己开发的格式
扩展是不能使用的(主要是基于easyformat 框架的问题)
说明
如果easy format 框架对于文件系统进行新的格式化插件开发,对于dremio 内部的一些处理我们还是需要一些修改的,不然支持上会有问题(ui 上也是需要同时处理的), 间接的解决方法就是在处理的时候就转化为支持的通用格式,目前支持的通用格式
new ImmutableBiMap.Builder<String, FileType>()
.put("csv", FileType.CSV)
.put("tsv", FileType.TSV)
.put("txt", FileType.TEXT)
.put("psv", FileType.PSV)
.put("json", FileType.JSON)
.put("avro", FileType.AVRO)
.put("parquet", FileType.PARQUET)
.put("iceberg", FileType.ICEBERG)
.put("delta", FileType.DELTA)
.put("xlsx", FileType.EXCEL)
.put("xls", FileType.XLS)
.put("unknown", FileType.UNKNOWN)
.put("dremarrow1", FileType.ARROW)
.put("log", FileType.HTTP_LOG)
.build();
参考资料
sabot/kernel/src/main/java/com/dremio/exec/store/dfs/easy/EasyFormatPlugin.java
services/namespace/src/main/java/com/dremio/service/namespace/file/FileFormatDefinitions.java
services/namespace/src/main/proto/namespace-file.proto
services/namespace/src/main/java/com/dremio/service/namespace/file/FileFormat.java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2023-06-03 tink google 加密安全实践的框架
2023-06-03 keydb 6.3. 3发布
2023-06-03 trc golang 进程请求追踪包
2023-06-03 pgcenter 类似top 的pg 观测cli工具
2022-06-03 nodejs 通过s3fs 处理文件
2022-06-03 nodejs 文件到s3的几种方法
2022-06-03 top10 nginx 配置问题