我是Clojure的新手,我的第一个项目需要处理巨大的(250 + GB)XML文件。我想把它放入PostgreSQL以后再处理,但不知道如何处理这么大的文件。Clojure中的巨大XML
回答
我使用新的clojure.data.xml
在中等笔记本电脑上处理31GB维基百科转储。旧的lazy-xml
contrib库不适合我(耗尽内存)。
https://github.com/clojure/data.xml
简单的例子代码:
(require '[clojure.data.xml :as data.xml]) ;'
(defn process-page [page]
;; ...
)
(defn page-seq [rdr]
(->> (:content (data.xml/parse rdr))
(filter #(= :page (:tag %)))
(map process-page)))
所以这是@ivant指的是什么? clojure io实现lazy-xml被破坏了吗? – 2012-03-30 16:02:02
是的,它有问题。无论如何,它是旧clojure contrib的一部分,并且已被弃用。'data.xml'是替代品。 – 2012-03-30 16:26:07
OK - 我花了几个小时尝试所有((()))可能的组合,但没有成功。我得到StackOverflow错误,它是 - 据我了解 - 因为我使用这个: '(with-open [rdr(BufferedReader。(FileReader。file-name ))'' 并应该使用一些输入流,但我是新来的Clojure和那几个小时后...你能帮忙吗? – trzewiczek 2012-03-30 19:22:19
处理巨大的XML通常是用SAX进行,Clojure中的情况下,这是 http://richhickey.github.com/clojure-contrib/lazy-xml-api.html
看到 (解析-seq的文件/的InputStream/URI)
该API可能是懒惰的,但IO不是,所以我怀疑它会在这个大小的文件上工作。 – ivant 2012-03-30 12:25:47
@ivant你将它连接到一个逐步读取数据的输入流。这是在java中处理大型XML文件的标准做法。 – 2012-03-30 13:04:40
请参阅贾斯廷的答案,以解释在这里可能指的是什么。 – 2012-03-30 16:33:22
如果XML是一个记录的集合, https://github.com/marktriggs/xml-picker-seq是您需要在xml中处理记录而不考虑xml大小。它在引擎盖下使用XOM,并一次处理一条“记录”。
我也试过,但没有成功。我的意思是 - 它做了一个关于巨大文件的技巧,但是我不能用xpath-query得到结果 - 空结果出来了。唯一可用的xpath查询是“。”,但它不是我想要的......不能管理这个问题超过两个小时...... :( – trzewiczek 2012-03-30 20:39:54
您也可以使用大量的文件快报XML解析器(www.expressoxml.com)。它可以解析36GB以上的文件,因为它不受文件大小的限制。它可以从搜索中返回多达230,000个元素,并且可以通过其网站上的“云”进行流式传输。所有开发者版本都是免费的。
尽管您没有试图将此广告伪装为公正的建议,但最好明确说明您与该产品的强烈关联。 https://twitter.com/Lughnasagh/status/260387856772653056。 – 2014-04-24 14:25:59
- 1. Clojure doseq生成巨大的代码?
- 2. 在我的巨大XML中的错误?
- 3. 解析PHP中的巨大XML文件
- 4. 解析Java中的巨大XML
- 5. 巨大的生成XML的优化?
- 6. 巨大的XML到CSV的转换
- 7. PHP:解析巨大的XML无内存
- 8. 用600M解析巨大的XML文件
- 9. 验证巨大的XML文件
- 10. 比较巨大的XML文件
- 11. 从巨大的xml文件中的可选XML节点中读取值
- 12. 解析clojure中的XML
- 13. 在C中处理巨大的xml文件的方法#
- 14. D3在可视化巨大的XML文件中的Javascript性能
- 15. Python中的巨大集合
- 16. java中的巨大矩阵
- 17. pmap中的巨大anon块
- 18. Django中的巨大表格?
- 19. 在巨大的XML文件中组合值
- 20. 阅读Magento中巨大的产品XML文件
- 21. XML架构集合变化 - 巨大的性能击中
- 22. 巨大的分页
- 23. Clojure XML解析
- 24. 大厦表中的Clojure
- 25. MATLAB - 巨大值
- 26. 巨大差距
- 27. 可用的补充clojure-xml /解析的Clojure XML解析库
- 28. 如何在PowerShell中使用XmlReader来传输大/巨大的XML文件?
- 29. 在Ruby中解析XML巨大不处理在服务器
- 30. MySQL巨大的IN设置为巨大的表
首先了解如何处理小文件,然后处理。 – 2012-03-30 08:57:24
这个XML看起来像什么?高度树木或许多物品的平面集合? – cgrand 2012-03-30 09:26:18
树木 - 伟大的词! +1 – 2012-03-30 11:30:03