我正在尝试将维基百科历史转储从XML解析到PySpark数据帧。当我在一个有1.6tb内存的集群上解析一个大文件(+100GB)时,我得到了OutOfMemoryError:请求的数组大小超过了VM限制错误(即使我正在使用集群中的整个RAM,并且我尝试了executorMemory和MemoryOverhead的一些组合)。XML文件的结构如下:
<mediawiki>
<page>
<id>1</id>
<title>SomeTitle</title>
<revision>... </revision>
<revision>... </revision>
<revision>... </revision>
...
</page>
<page>
<id>2</id>
<title>SomeTitle</title>
<revision>... </revision>
<revision>... </revision>
<revision>... </revision>
...
</page>
...
</mediawiki>
我的代码是:
df = spark.read.format('xml').options(rowTag='page').load("xmlfile.xml")
我想把“page”作为行标记,因为我需要一些信息,比如来自页面的标题和id(之后我想分解修订以获得每个修订的一行)。而且,我认为我得到这个错误是因为有些页面有太多的修订,它们不能适应节点上的下划线java数组。你知道吗
如果我使用:
df = spark.read.format('xml').options(rowTag='revision').load("xmlfile.xml")
一切正常,但我失去了有关网页的信息,如标题和id等
有人能提出另一种方法来解析XMLs吗?也许使用'revision'作为rowTag,但不知何故保持id和title远离'page'标记。提前谢谢。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐