java - 有没有办法在达到文件大小限制时强制自定义数据源启动新文件?
问题描述
我们正在 Spark 中构建一个工具来处理 TB 的交易数据并生成 JSON 报告。限制任何单个 JSON 文件的大小是一项硬性要求,以及有关 JSON 的其他特定要求。为了处理 JSON 格式要求,我们构建了一个自定义 DataSource 类(它扩展了 Spark 附带的 JsonFileFormat)。
但是,我找不到任何文档或 API 规范来指定文件创建或文件大小限制。看起来这一切都在我可以控制的水平以下进行管理。
这是真的吗,如果不是,是否有人知道一旦文件达到一定大小如何拆分文件?
Dataset<Row> dataframe = ...
dataframe.write()
.format('com.company.custom.datasource')
.options(...)
.save('hdfs://host:port/path/to/directory');
理想情况下,我们会有一个写入器,将分区数据保存到它的 JSON 格式文件中,但是一旦我们达到一定数量的字节,它就会关闭该文件,并开始一个新文件。即使处理相同的分区。
或者,如果有某种方法可以知道分区中有多少字节,我们可以提前重新分区。
解决方案
推荐阅读
- javascript - 使用 JavaScript 仅查找和替换 HTML 中的整个单词?
- c# - 如何在c#中将颜色作为参数传递?
- c++ - GLUT 环面与相机相撞
- python - Python:如何创建多个函数重复工作并且每个函数工作的次数不同?
- typescript - 打字稿。定义泛型
键作为字符串 - python - 我收到错误消息“TypeError:预期的字符串或类似字节的对象”我该如何解决?
- r - 根据用户对 radioButtons() 的选择,使用 downloadHandler() 动态下载闪亮的文件
- reactjs - 将图像文件上传到 Mongodb 会创建一个空项目。反应 JS
- rust - 如何使用任意键类型序列化和反序列化 BTreeMap?
- node.js - 编写此 Node.js 逻辑以从 Google Cloud Storage 检索和更新 CSV 数据的更具可扩展性的方式?