2016-12-26 1 views
-1

Мое требование несколько сложно. Сложный XML должен быть сгенерирован из ввода текстового файла. Я успешно это сделал, но он включает в себя «11 XML-соединений». Из-за этого производительность кода является жалкой, когда набор данных имеет большой объем.XML Join Step in Pentaho Kettle очень низкий в производительности

Как я могу кодировать для сложного генерации XML с хорошей производительностью?

Любые предложения!

После некоторых предложений, я удалил все соединения и взял курортный поиск потока (как показано в примере с чайником) и «измененный скрипт java» для окончательного соединения.

Но он не работает на этапе «окончательного соединения». Ниже приведено соединение, в котором он не работает и выбрасывает ошибку «из памяти»

var request = new XML() 

request = <newbiz xsi:schemaLocation="http://www.crsoftwareinc.com/xml/ns/titanium/common/v1_0 newbiz.xsd" xmlns="http://www.crsoftwareinc.com/xml/ns/titanium/common/v1_0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <newbiz-header> 
     <total-consumers>1</total-consumers> 
     <creditor-name>DefCrdtr</creditor-name> 
     <total-principal>1</total-principal> 
     <total-charge>1</total-charge> 
     <total-interest>1</total-interest> 
     <total-balance>1</total-balance> 
    </newbiz-header> 
    <consumers>{xmlConsumerNewFinal}</consumers> 
</newbiz> 

var xmlconsumers_final=request.toXMLString(); 

Любые предложения!

ответ

1

да, используя XML присоединиться шаг его действительно низкой производительности, я убрал все эти шаги и заменены шага сценария, является e4x ECMAScript (который входит в Pentaho чайник, является носорог JavaScript двигателя и специально задуманы для работы с XML)

, например, вы можете использовать var foo = new XML(); не включенные в другие JS двигателей

все будет быстрее и просто строить свои XMLs с помощью этой техники. загляните в документ: http://wso2.com/project/mashup/0.2/docs/e4xquickstart.html

+0

Я принял ваш ответ, поскольку это помогло в исполнении. но, поскольку он превышает 400K строк, он терпит неудачу, выбросив ошибку «из памяти». Я обновил свой вопрос с помощью скрипта, который я написал в соответствии с вашим предложением. Что еще я могу сделать для повышения производительности? –

+0

Спасибо, но я уже поднял это до 8 ГБ. Я хочу найти оптимальный способ сделать это. Когда я использую декартовое соединение, вместо скрипта он работает. Я сбитый с толку, поскольку я хочу использовать сценарий. –

+0

рассматривают последний шаг как конкатенации строк, не используя объект xml. этот шок будет намного лучше, чем производительность плунжера – jipipayo

Смежные вопросы