Есть ли способ заставить пользовательский источник данных начать новый файл при достижении предела размера файла? - PullRequest
6 голосов
/ 16 апреля 2019

Мы создаем инструмент в искре для обработки терабайтов данных транзакций и создания отчета 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, но как только мы получим определенное количество байтов, он закроет этот файл и начнет новый.Даже если обрабатывается один и тот же раздел.

В качестве альтернативы, если бы был какой-то способ узнать, сколько байтов в разделе, мы могли бы переразбить заранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...