[英]How to convert large XML to string in java
作为PIG脚本的一部分,我需要获取使用UDF生成的XML,并且XML太大(大约1.5GB)。 目前,我正在使用以下代码将XML转换为String
StringWriter sw = new StringWriter();
XMLWriter output = new XMLWriter(sw, xmlFormat);
try {
output.write(document);
output.close();
} catch (IOException e) {}
return sw.toString();
由于StringWriter内部使用字符串缓冲区并且它依赖于Arrays,因此抛出OutofMemoryError,因为Arrays使用整数作为索引,并且XML的长度超出了int范围。
有没有办法将这个大的xml转换为String并将其发送回Pig脚本? 或者我们可以通过其他任何方式实现它。
仅供参考-我们正在使用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) {}
为了避免内存不足,您需要流式传输xml文件。 为此,您可以使用StreamingXMLLoader直接在Pig脚本中流式传输和解析xml。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.