首页 > 解决方案 > 使用 pyspark / spark xml 删除一些节点

问题描述

使用以下内容将 xml 加载到数据框中后:

df = spark.read\
        .format("xml")\
        .options(**options)\
        .load("s3a://.../.../")

如何删除一个节点(例如使用 /root/a/aa 的 xpath),然后再次将结果写入 xml?原始 xml 有数千个节点,因此列出我想要保留的所有节点是不切实际的。如果这可以使用 spark SQL 来完成,那也会更有帮助。

示例源 xml:

<root>
  <a>
    <aa>
      ...
    </aa>
    <ab>
      ...
    </ab>
    ...
    <az>
      ...
    </az>
  <a>
  <b>
    <ba>...</ba>
    <bb>
       <bba>...</bba>
       ...
       <bbz>...</bbz>
    </bb>
    ...
    <bz> ... </bz>
  </b>
  ...
  <z> ... </z>
</root>

样本预期输出

<root>
  <a>
    <ab>
      ...
    </ab>
    ...
    <az>
      ...
    </az>
  <a>
  <b>
    <ba>...</ba>
    <bb>
       <bba>...</bba>
       ...
       <bbz>...</bbz>
    </bb>
    ...
    <bz> ... </bz>
  </b>
  ...
  <z> ... </z>
</root>

标签: xmlapache-sparkpysparkapache-spark-sql

解决方案


推荐阅读