Мы создаем инструмент в искре для обработки терабайтов данных транзакций и создания отчета JSON.Существует жесткое требование ограничить размер любого отдельного файла JSON, а также другие конкретные требования, касающиеся JSON.Чтобы соответствовать требованиям форматирования JSON, мы создали собственный класс DataSource (который расширяет JsonFileFormat, поставляемый с Spark).
Однако я не могу найти какую-либо документацию или спецификации API, которые бы указывали ограничения для создания или размера файла.Похоже, что все это управляется на уровне ниже, где я могу контролировать.
Это правда, и если нет, кто-нибудь знает, как разбить файл, когда он достигнет определенного размера?
Dataset<Row> dataframe = ...
dataframe.write()
.format('com.company.custom.datasource')
.options(...)
.save('hdfs://host:port/path/to/directory');
В идеале, у нас был бы писатель, который сохраняет разделданные в файл формата JSON, но как только мы получим определенное количество байтов, он закроет этот файл и начнет новый.Даже если обрабатывается один и тот же раздел.
В качестве альтернативы, если бы был какой-то способ узнать, сколько байтов в разделе, мы могли бы переразбить заранее.