我正在尝试使用 pySpark 读取 XML 文件。问题是,它产生空数据帧。我能够毫无问题地读取不同的文件。
这是 XML 结构:
<?xml version="1.0"?>
<TAG1>
<TAG2 id="ID1">
<field1>some value</field1>
<field2>some value</field2>
<field3></field3>
</TAG2>
<TAG2 id="ID2">
<field1>some value</field1>
<field2></field2>
<field3></field3>
</TAG2>
<TAG2 id="ID3">
<field1>some value</field1>
<field2>some value</field2>
<field3>some value</field3>
</TAG2>
</TAG1>
我在读取文件时尝试了不同的选项,但没有一个有效。
df = spark.read \
.format('com.databricks.spark.xml') \
.options(rowTag='TAG2') \
.options(nullValue='') \
.options(emptyValue='') \
.load(xmlFile)
更新:
我将文件内容复制到一个新文件,保存并加载,没有任何问题。 看来原始文件引起了问题。我尝试在读取选项中放入各种编码,但仍然无法加载原始文件。
文件恰好以 UTF-16 编码,但设置此编码并没有解决问题。我仅在传递另一个参数后才成功加载文件 - charset。
df = spark.read \
.format('com.databricks.spark.xml') \
.options(rowTag='TAG2') \
.options(nullValue='') \
.options(encoding='UTF-16LE') \
.options(charset='UTF-16') \
.load(xmlFile)