По-видимому, шаг Вывод в текстовый файл в Kettle не поддерживает параллелизм: если два разных шага Вывод в текстовый файл записывают в один и тот же файл, механизм блокировки не реализуется, и, таким образом, результирующий выходной файл содержит (неправильные) выходные строки, полученные в результате сочетания полей входных источников. Может ли кто-нибудь предоставить мне подтверждение этого поведения (лучше, если с зачисленным источником)?
Чайник (Pentaho PDI): одновременная запись с выводом текстового файла
Ответы (2)
Со страницы 387 книги Pentaho Kettle Solutions:
Параллельная запись в один текстовый файл невозможна. Например, вы не можете использовать несколько копий шага «Вывод текстового файла» для записи в один и тот же выходной файл. Если вы попробуете это сделать, результатом будет смешанный файл со строками и полями, оказавшимися в неправильном месте. Эту проблему можно решить только с помощью передовых алгоритмов блокировки, которые, в свою очередь, снова уменьшают степень параллелизма до одного потока. Однако простым решением является запись в несколько выходных файлов.
Когда вы записываете одни и те же файлы с помощью нескольких шагов «Вывод текстового файла», это похоже на то, что к файлу обращаются две отдельные программы, имеющие разные контексты. Так что, конечно, в таких случаях Pentaho не будет обрабатывать параллелизм. Функция записи файла внутри «Вывод текстового файла» хотя и синхронизирована, что обрабатывает параллелизм в одном контексте.