Spark DataFrame xml更改列名

Posted

技术标签:

【中文标题】Spark DataFrame xml更改列名【英文标题】:Spark DataFrame xml change column name 【发布时间】:2017-08-24 09:31:36 【问题描述】:

我尝试使用 DataBricks Spark XML 加载 XML 文件。 我能够正确加载数据,但我需要更改其中一列的名称并将其作为单独的标签放在架构中。基本上,很少有标签需要生成为空值,而这些标签不会出现在数据中。(这些字段在 XSD 中)。

例子:-

root
  First Tag
     Element Name
     Second Tag ( Tag To Change)
        Tag3
        Tag4

我需要换成

root
  First Tag
     Element Name
     Second Tag 
        Tag3
        Tag4
     Third Tag 
        Tag3
        Tag4

我尝试了很多方法:-(我无法手动添加架构)。

    withColumn.->(使用此选项我可以添加一个新列,但在根级别,我需要将其添加到明确的层次结构中。) withColumnRenamed ->(此选项不会改变任何内容)。

感谢任何帮助!

【问题讨论】:

【参考方案1】:

没有捷径可做,因为它不允许更改低于 1 级以上的架构。

因此,您可能会考虑将复杂标签分解为 1 级简单标签,包括用于识别和连接记录的主键。

一旦你有了简单的标签,然后使用 columnRenamed 或其他选项,你可以更改数据类型并使用主键返回以创建原始数据框(但使用修改后的名称或类型)。

【讨论】:

以上是关于Spark DataFrame xml更改列名的主要内容,如果未能解决你的问题,请参考以下文章

Spark 1.6:在 DataFrame 中使用转义的列名删除列

两个 Spark DataFrame 的简单连接因“org.apache.spark.sql.AnalysisException:无法解析列名”而失败

从 HDFS CSV 文件构建的 Spark Dataframe 中提取列名

如何从 Spark DataFrame 中删除列表中给出的多个列名?

求教: Spark的dataframe 怎么改列的名字,比如列名 SUM(_c1) 改成c1

Python之DataFrame更改列名及重拍列顺序