pyspark XML 读取生成空数据帧

问题描述 投票:0回答:1

我正在尝试使用 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)

更新:

我将文件内容复制到一个新文件,保存并加载,没有任何问题。 看来原始文件引起了问题。我尝试在读取选项中放入各种编码,但仍然无法加载原始文件。

xml apache-spark pyspark databricks azure-databricks
1个回答
0
投票

文件恰好以 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)
© www.soinside.com 2019 - 2024. All rights reserved.