dremio 读取 jsonl 格式支持
实际上属于dremio 社区一个问题,内部实际上是dremio 对于格式化插件支持的问题, 不少是基于文件格式硬编码的,尽管
我们可以自定义格式化插件,但是对于已经支持的就有点不是很方便了,可以直接复用现有的,以下说明下修改以及处理
直接修改JSONFormatPlugin 代码支持jsonl
- 参考如下
FormatCreator.java
public static Map<String, FormatPluginConfig> getDefaultFormats() {
Map<String, FormatPluginConfig> defaultFormats = new TreeMap<>();
defaultFormats.put("csv", createTextFormatPlugin(false, ",", Lists.newArrayList("csv")));
defaultFormats.put("csvh", createTextFormatPlugin(true, ",", Lists.newArrayList("csvh")));
defaultFormats.put("tsv", createTextFormatPlugin(false, "\t", Lists.newArrayList("tsv")));
defaultFormats.put("psv", createTextFormatPlugin(false, "|", Lists.newArrayList("psv", "tbl")));
defaultFormats.put("txt", createTextFormatPlugin(false, "\u0000", Lists.newArrayList("txt")));
TextFormatConfig psva = createTextFormatPlugin(false, "|", Lists.newArrayList("psva", "tbla"));
psva.autoGenerateColumnNames = true;
defaultFormats.put("psva", psva);
defaultFormats.put("parquet", new ParquetFormatConfig());
defaultFormats.put("json", new JSONFormatPlugin.JSONFormatConfig());
defaultFormats.put("jsonl", new JSONFormatPlugin.JSONFormatConfig());
defaultFormats.put("dremarrow1", new ArrowFormatPluginConfig());
defaultFormats.put("iceberg", new IcebergFormatConfig());
defaultFormats.put("delta", new DeltaLakeFormatConfig());
defaultFormats.put("xls", new ExcelFormatPluginConfig(true));
defaultFormats.put("excel", new ExcelFormatPluginConfig(false));
return defaultFormats;
}
JSONFormatPlugin.java
public static class JSONFormatConfig implements FormatPluginConfig {
public List<String> extensions = ImmutableList.of("json","jsonl");
private static final List<String> DEFAULT_EXTS = ImmutableList.of("json","jsonl");
基于标准格式化插件模式
实际上就是复制JSONFormatPlugin的代码,自己修改,然后编译一个,复制到dremio的classpath 中
构建以及替换
方法就比较多了,可以是直接jar class 替换的,也可以是按照标准jar 文件存放的
- class 替换的参考命令
jar uf dremio-sabot-kernel-25.0.0-202404051521110861-ed9515a8.jar com/dremio/exec/store/dfs/FormatCreator.class
jar uf dremio-sabot-kernel-25.0.0-202404051521110861-ed9515a8.jar com/dremio/exec/store/easy/json/JSONFormatPlugin\$JSONFormatConfig.class
- 标准格式化插件模式
直接放到dremio jars 目录就行了
参考效果
- s3 数据存储
- 通过修改表元数据进行自动提升
自动提升就会使用到格式化插件
ALTER TABLE s3.dalong.appdemo REFRESH METADATA AUTO PROMOTION
效果
- 查询
说明
以上是一个简单说明,实际上对于格式化插件的开发基本套路也是这样的
参考资料
https://jsonlines.org/
https://www.atatus.com/glossary/jsonl/
https://www.cnblogs.com/rongfengliang/p/18141296
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2022-05-02 dremio 21 版本发布
2021-05-02 支持minio cubestore docker 镜像
2021-05-02 修改官方cubestore 支持minio s3
2020-05-02 razzle 一个不需要配置的可以创建通用服务器端渲染的框架
2020-05-02 purgecss一个强大的移除不需要的css工具包
2019-05-02 piplinedb 团队加入confluen
2018-05-02 drone 学习一 几个核心组件