【发布时间】:2018-01-16 11:42:20
【问题描述】:
我有一个具有以下设置的 XML 文件。
<?xml version="1.0" encoding="utf-8"?>
<SomeRoottag>
<row Id="47513849" PostTypeId="1" />
<row Id="4751323" PostTypeId="4" />
<row Id="475546" PostTypeId="1" />
<row Id="47597" PostTypeId="2" />
</SomeRoottag>
我解析文件并使用以下代码将其保存为 Hive 表。
df = sqlContext.read.format('xml').option("rowTag","SomeRoottag").load("/tmp/xmlfile.xml")
flat=df.withColumn("rows2",explode(df.row)).select("rows2.*")
flat.write.format("parquet").saveAsTable("xml_table")
使用我的测试数据 (10mb) 一切正常,但是当我加载大文件 (>50G) 时它失败了。 似乎 spark JVM 尝试加载整个文件失败,因为它只有 20G 大。
处理这样的文件的最佳方法是什么?
更新:
如果我执行以下操作,我不会收到任何数据:
df = (sqlContext.read.format('xml').option("rowTag", "row").load("/tmp/someXML.xml"))
df.printSchema()
df.show()
输出:
root
++
||
++
++
【问题讨论】:
标签: python xml apache-spark hive