Чайник (Pentaho PDI): одновременная запись с выводом текстового файла

По-видимому, шаг Вывод в текстовый файл в Kettle не поддерживает параллелизм: если два разных шага Вывод в текстовый файл записывают в один и тот же файл, механизм блокировки не реализуется, и, таким образом, результирующий выходной файл содержит (неправильные) выходные строки, полученные в результате сочетания полей входных источников. Может ли кто-нибудь предоставить мне подтверждение этого поведения (лучше, если с зачисленным источником)?


person Claudio    schedule 04.07.2016    source источник


Ответы (2)


Со страницы 387 книги Pentaho Kettle Solutions:

Параллельная запись в один текстовый файл невозможна. Например, вы не можете использовать несколько копий шага «Вывод текстового файла» для записи в один и тот же выходной файл. Если вы попробуете это сделать, результатом будет смешанный файл со строками и полями, оказавшимися в неправильном месте. Эту проблему можно решить только с помощью передовых алгоритмов блокировки, которые, в свою очередь, снова уменьшают степень параллелизма до одного потока. Однако простым решением является запись в несколько выходных файлов.

person Claudio    schedule 04.07.2016
comment
Вы можете объединять потоки перед TextFileOutput, они должны соответствовать количеству и типу полей в строках. - person simar; 06.07.2016
comment
Конечно. Мне просто интересно, реализует ли выход текстового файла какую-то блокировку сам по себе или нет. Спасибо. - person Claudio; 07.07.2016

Когда вы записываете одни и те же файлы с помощью нескольких шагов «Вывод текстового файла», это похоже на то, что к файлу обращаются две отдельные программы, имеющие разные контексты. Так что, конечно, в таких случаях Pentaho не будет обрабатывать параллелизм. Функция записи файла внутри «Вывод текстового файла» хотя и синхронизирована, что обрабатывает параллелизм в одном контексте.

person sushant kunal    schedule 23.11.2016