0
作爲PIG腳本的一部分,我需要獲取使用UDF生成的XML並且XML太大(大約1.5GB)。目前我使用下面的代碼,XML轉換爲字符串如何將大型XML轉換爲java中的字符串
StringWriter sw = new StringWriter();
XMLWriter output = new XMLWriter(sw, xmlFormat);
try {
output.write(document);
output.close();
} catch (IOException e) {}
return sw.toString();
此拋出的OutOfMemoryError爲StringWriter的內部使用字符串緩衝區,它依賴於Arrays.As陣列使用整數索引和XML的長度超出了INT範圍。
有沒有辦法將這個大的xml轉換爲字符串並將其發送回豬腳本?或者我們能否以任何其他方式實現它。
僅供參考 - 我們正在使用的dom4j(org.dom4j.Document
),用於處理個XML
UPDATE1: 我想下面這我現在能夠存儲800 MB,但仍是1.5 GB的失敗文件代碼
ByteArrayOutputStream result = new ByteArrayOutputStream();
try {
XMLWriter output = new XMLWriter(result, xmlFormat);
output.write(document);
output.close();
return result.toString("UTF-8");
} catch (IOException e) {}
AFAIK XML已經是基於文本的格式,所以它實際上已經是一個字符串。此外,我不知道爲什麼你要將它轉換爲字符串,也許問題在於你的推理。在任何情況下,您都可以:1)爲JVM分配更多內存或2)使用文件而不是字符串進行傳輸,然後在另一端讀取它。 – m0skit0