2016-12-26 42 views
-1

我的要求有點棘手。複雜的XML需要從文本文件輸入中生成。我已經成功完成了這個任務,但它涉及'11 XML連接'。由於當數據集的數據量很大時,代碼的性能是可悲的。XML加入步驟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的壺,是Rhino JavaScript引擎,以及專門構思與合作XML)

,例如,你可以使用var foo = new XML(); 其它JS引擎不包括

一切會更快和簡單的使用這種技術構建個XML。 偷看文檔: http://wso2.com/project/mashup/0.2/docs/e4xquickstart.html

+0

我接受了你的答案,因爲它在性能上有所幫助。但是由於它超過了400K行,它失敗了,引發'內存不足錯誤'。我已經用腳本更新了我的問題,根據您的建議我寫了這個問題。我可以進一步做什麼來提高性能? –

+0

謝謝,但我已經提出到8GB。我想找到一個最佳的方式來做到這一點。當我使用笛卡爾連接而不是腳本時,它正在工作。我很困惑,因爲我想使用腳本。 –

+0

將最後一步視爲字符串連接,而不是使用xml對象。這個公羊的表現要好得多 – jipipayo

相關問題