Как использовать gradle mlExportToFile и REST Transform для создания файла NDJSON

#marklogic #ml-gradle #marklogic-10

#marklogic #ml-gradle #marklogic-10

Вопрос:

В настоящее время я использую gradle mlExportToFile для экспорта документов json в файл. Однако мне нужно, чтобы конечный файл был в формате JSON, разделенном новой строкой, с каждым документом в отдельной строке внутри файла. Я видел, что метод mlExportToFile REST transform можно использовать для создания CSV, поэтому я предполагаю, что этот подход также будет работать для NDJSON. Я перепробовал практически все, что мог придумать, и файл по-прежнему не помещает записи в свои собственные строки. Любые советы приветствуются!!

Комментарии:

1. Я не знаю, что такое «mlExportToFile», но вы, вероятно, могли бы написать небольшую задачу Gradle, которая красиво печатает файл json после его экспорта. Это сработает для вас?

Ответ №1:

Я думаю, что ограничение здесь заключается в том, что когда базовый ExportToWriterListener (из библиотеки Java-клиента ML / DMSDK) запишет документ в файл в формате, который он извлек из ML, который по умолчанию будет включать в себя новые строки. Задача ml-gradle — это всего лишь одна строка кода, runQueryBatcherJob(new ExportToFileJob()) поэтому вы можете легко настроить свою собственную задачу.

Я полагаю, что вы можете повторно использовать ExportToFileJob (который находится в проекте marklogic-data-movement-components) — в нем есть getExportListener() метод, который возвращает ExportToWriterListener (в проекте marklogic-client-api). И у этого есть onGenerateOutput(OutputListener) метод, в котором вы можете написать OutputListener , который разбивает JSON на одну строку.

Это, безусловно, может стать новой функцией и в ml-gradle; то есть свойство, такое как -PnewlineDelimitedJson=true .

Не стесняйтесь запрашивать для этого заявку в проекте ml-gradle (хотя улучшение фактически будет сделано в проекте marklogic-data-movement-components).

Комментарии:

1. Спасибо, это действительно полезно!