Задание Talend не работает должным образом при использовании в нем нескольких пар tBufferOuput / tBufferInput

Я разрабатываю большую работу в Talend Open Studio (около 90 компонентов сейчас и минимум 150 в конце разработки). Но количество компонентов в подзаданиях ограничено, потому что Java-метод подзадачи не может превышать ограничение в 65536 байт.

Поэтому я разделил свою работу на несколько подзадач, используя пару tBufferOuput / tBufferInput для передачи данных между каждым подзаданием. И теперь проблема в том, что мне нужно очищать globalBuffer перед каждым tBufferOuput.

Я поискал в Интернете и нашел решение с компонентом tJava, использующим в нем globalBuffer.clear();, но когда я это сделаю, моя работа завершится без обработки каких-либо данных.


person JDPanda    schedule 06.05.2014    source источник


Ответы (1)


Если вы не передаете данные родительскому заданию, а вместо этого храните данные внутри одного и того же задания (только несколько вложенных заданий внутри), вам, вероятно, будет лучше с компонентами tHash. Это позволяет вам кэшировать некоторые данные (либо в памяти, либо временно на диск), а затем извлекать эти данные, связывая tHashInput с конкретным tHashOutput.

Компоненты tBuffer просто сбрасывают все данные в один конкретный пул и забирают их оттуда, поэтому на самом деле они не подходят для нескольких входов и выходов задания (хотя это может быть желаемым результатом). Лучше всего использовать их только для передачи данных обратно родительскому заданию, используя tBufferOutput в дочернем задании, а затем связав tRunJob в родительском задании с тем, на что вы хотите передать данные (что может быть другим заданием).

person ydaetskcoR    schedule 06.05.2014