首页 > 解决方案 > 有没有办法在达到文件大小限制时强制自定义数据源启动新文件?

问题描述

我们正在 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 格式文件中,但是一旦我们达到一定数量的字节,它就会关闭该文件,并开始一个新文件。即使处理相同的分区。

或者,如果有某种方法可以知道分区中有多少字节,我们可以提前重新分区。

标签: javascalaapache-spark

解决方案


推荐阅读