Spark Scala,如何检查数据框中是不是存在嵌套列
Posted
技术标签:
【中文标题】Spark Scala,如何检查数据框中是不是存在嵌套列【英文标题】:Spark Scala, how to check if nested column is present in dataframeSpark Scala,如何检查数据框中是否存在嵌套列 【发布时间】:2019-03-14 13:30:34 【问题描述】:我正在从 parquet 文件中读取一个数据框,该文件具有嵌套列 (struct
)。
如何检查是否存在嵌套列?
可能是这样的
+----------------------+
| column1 |
+----------------------+
|a_id:[1], b_id:[1,2]|
+----------------------+
或者这样
+---------------------+
| column1 |
+---------------------+
|a_id:[3,5] |
+---------------------+
我知道,如何检查***列是否存在,如下所示:How do I detect if a Spark DataFrame has a column:
df.schema.fieldNames.contains("column_name")
但是如何检查嵌套列?
【问题讨论】:
您可以使用.printSchema()
来分析推断的架构。您也可以通过定义case class myClass(...)
并使用.as[myClass]
来查看它是否转换成功,从而转换为键入的Dataset
。
this answer 解释它。这是检查嵌套列的最可靠方法。
How do I detect if a Spark DataFrame has a column的可能重复
【参考方案1】:
您可以获取嵌套字段的架构作为结构,然后检查您的字段是否存在于它的字段名称中:
val index = df.schema.fieldIndex("column1")
val is_b_id_present = df.schema(index).dataType.asInstanceOf[StructType]
.fieldNames.contains("b_id")
【讨论】:
以上是关于Spark Scala,如何检查数据框中是不是存在嵌套列的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Scala/Spark 添加不基于数据框中现有列的新列? [复制]
如何在 spark scala 中检查与其关联的列名和数据是不是匹配