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