当前位置: 首页 > news >正文

Spark 4.0的VariantType 类型以及内部存储

背景

本文基于Spark 4.0

总结

Spark中的 VariantType 类型,用尽量少的字节来存储Json的格式化数据

分析

这里主要介绍 Variant 的存储,我们从VariantBuilder.buildJson方法(把对应的json数据存储为VariantType类型)开始:

public static Variant parseJson(JsonParser parser, boolean allowDuplicateKeys)throws IOException {VariantBuilder builder = new VariantBuilder(allowDuplicateKeys);builder.buildJson(parser);return builder.result();}

这个方法会调用buildJson这个方法:

JsonToken token = parser.currentToken();if (token == null) {throw new JsonParseException(parser, "Unexpected null token");}switch (token) {case START_OBJECT: {ArrayList<FieldEntry> fields = new ArrayList<>();int start = writePos;while (parser.nextToken() != JsonToken.END_OBJECT) {String key = parser.currentName();parser.nextToken();int id = addKey(key);fields.add(new FieldEntry(key, id, writePos - start));buildJson(parser);}finishWritingObject(start, fields);break;}case START_ARRAY: {ArrayList<Integer> offsets = new ArrayList<>();int start = writePos;while (parser.nextToken() != JsonToken.END_ARRAY) {offsets.add(writePos - start);buildJson(parser);}finishWritingArray(start, offsets);break;}case VALUE_STRING:appendString(parser.getText());break;case VALUE_NUMBER_INT:try {appendLong(parser.getLongVal
http://www.dtcms.com/a/265627.html

相关文章:

  • 云上堡垒:如何用AWS原生服务构筑坚不可摧的主机安全体系
  • java教程——初识guava(2)
  • 在 React 中使用 WebSockets 构建实时聊天应用程序
  • 实训项目记录 | 7.3
  • AI会取代网络工程师吗?理解AI在网络安全中的角色
  • 【网络安全】Webshell命令执行失败解决思路
  • 如何避免服务器出现故障情况?
  • 数据库服务端有连接数限制吗
  • vue3 + cesium + heatmapjs 开发热力图(不需要CesiumHeatMap插件)
  • JA3指纹在Web服务器或WAF中集成方案
  • 在银河麒麟V10 SP1上手动安装与配置高版本Docker的完整指南
  • Element UI 完整使用实战示例
  • Flutter 进阶:实现带圆角的 CircularProgressIndicator
  • 解决安装SunloginClient问题记录(Ubuntu 24.04.2)
  • 删除docker镜像后如何正确清理残余
  • 前端的一些报错
  • AIX 环境磁盘空间管理指南
  • 从零开始构建Airbyte数据管道:PostgreSQL到BigQuery实战指南
  • CentOS系统高效部署fastGPT全攻略
  • 两级缓存 Caffeine + Redis 架构:原理、实现与实践
  • 跨云架构:性能、成本与合规的平衡艺术
  • Linux 73 LAMP4
  • 渗透测试中 phpinfo() 的信息利用分析
  • Java接口报错:Packet for query is too large - 解决方案与架构思考
  • 从0到1搭建同城O2O外卖平台:外卖系统源码架构解析与实战指南
  • 前置代理重构网络访问的「中转站」
  • YOLOv2 正负样本分配机制详解
  • ollama bge-m3 Embending模型永久加载 does not support generate
  • Spring注解之@Repository
  • 采样点不一致:总线通信的隐形杀手