解决myxls开源组件导出大数据时内存溢出的问题

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介:
因为工作需求,客户要求把数据导出excel表格。开始时我们用的是开源的myxls组件,测试时还没问题,可是到了正常使用后程序老是爆出内存溢出的问题,经检测发现因为在用户使用中,一次导出的数据量超过数十万行,不内存溢出才怪~~,之前测试时因为数据量都比较小所以测试都没问题。上帝永远是上帝,我们查阅网络上的相关资料得出以下解决方案:

1.分页查询

2.是否存在死循环

3.是否有引用没有被收回

4.使用内存查看工具查看内存使用情况

而经分析,该方案不适用于我们的产品需求,因为客户需要的是一个完整的excel文件,来备份数据信息,所以再次研究 ,我们得出以下两种解决方案:
  • 使用分块输出;
1. 多文件输出方式;
2. 单文件多sheet输出;
  • 使用序列化对象的方式,分级输出序列化对象,最后在反序列化合并数据。
对于第一种方式而言,相当于在导入数据时也要考虑到多文件方式导入,而除非数据大量丢失不然上帝是不会经常使用导入功能的。导出多sheet也不是上帝想要看到的。
SO...... 我们采取了第二种方式,每 n(1000<n<10000)条数据序列化为一个对象存储到本地磁盘中,当数据提取完时,合并反序列化对象,存储为同一个excel文件,虽然这样做使数据导出过程变得相对复杂了,但是能支持同时导出数十及数百万的数据量,好处是那么的明显,原理有了...代码实现就简单了,无论你是用.net平台还是用java平台,他们都支持序列化对象操作。核心代码略


本文转自 tongling_zzu 51CTO博客,原文链接:http://blog.51cto.com/tongling/1188275

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
4月前
|
数据采集 编解码 人工智能
Gemma 3n正式版开源:谷歌全新端侧多模态大模型,2GB 内存就能跑,重点提升编码和推理能力!
6月底,Google正式开源发布了全新端侧多模态大模型 Gemma 3n!相较此前的预览版,最新的 Gemma 3n 完整版进一步提升性能表现,支持在 2GB 内存的硬件上本地运行,重点提升了编码和推理方面的能力。
634 1
|
缓存 easyexcel Java
Java EasyExcel 导出报内存溢出如何解决
大家好,我是V哥。使用EasyExcel进行大数据量导出时容易导致内存溢出,特别是在导出百万级别的数据时。以下是V哥整理的解决该问题的一些常见方法,包括分批写入、设置合适的JVM内存、减少数据对象的复杂性、关闭自动列宽设置、使用Stream导出以及选择合适的数据导出工具。此外,还介绍了使用Apache POI的SXSSFWorkbook实现百万级别数据量的导出案例,帮助大家更好地应对大数据导出的挑战。欢迎一起讨论!
1514 1
|
6月前
|
Arthas 监控 Java
Arthas mc(Memory Compiler/内存编译器 )
Arthas mc(Memory Compiler/内存编译器 )
224 6
|
存储 分布式计算 API
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
547 0
|
存储 安全 Linux
【开源指南】用二叉树实现高性能共享内存管理
本文介绍了一种使用C++实现的共享内存管理方案,通过借鉴Android property的设计思路,采用二叉树结构存储键值对,提高了数据检索效率。该方案包括设置和获取接口,支持多进程/线程安全,并提供了一个简单的测试示例验证其有效性。
495 107
|
数据可视化 大数据 定位技术
GIS:开源webgl大数据地图类库整理
GIS:开源webgl大数据地图类库整理
532 0
|
SQL 数据采集 分布式计算
【赵渝强老师】基于大数据组件的平台架构
本文介绍了大数据平台的总体架构及各层的功能。大数据平台架构分为五层:数据源层、数据采集层、大数据平台层、数据仓库层和应用层。其中,大数据平台层为核心,负责数据的存储和计算,支持离线和实时数据处理。数据仓库层则基于大数据平台构建数据模型,应用层则利用这些模型实现具体的应用场景。文中还提供了Lambda和Kappa架构的视频讲解。
1021 3
【赵渝强老师】基于大数据组件的平台架构
|
分布式计算 大数据 Serverless
云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展
在2024云栖大会开源大数据专场上,阿里云宣布推出实时计算Flink产品的新一代向量化流计算引擎Flash,该引擎100%兼容Apache Flink标准,性能提升5-10倍,助力企业降本增效。此外,EMR Serverless Spark产品启动商业化,提供全托管Serverless服务,性能提升300%,并支持弹性伸缩与按量付费。七猫免费小说也分享了其在云上数据仓库治理的成功实践。其次 Flink Forward Asia 2024 将于11月在上海举行,欢迎报名参加。
742 6
云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展
|
SQL 存储 分布式计算
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
227 9
|
存储 分布式计算 资源调度
两万字长文向你解密大数据组件 Hadoop
两万字长文向你解密大数据组件 Hadoop
473 11

热门文章

最新文章