Spark Scala,如何检查数据框中是否存在嵌套列

sta*_*nly 5 schema scala apache-spark parquet

我正在从具有嵌套列 ( struct) 的镶木地板文件中读取数据框。如何检查嵌套列是否存在?

可能是这样的

+----------------------+
| column1              |
+----------------------+
|{a_id:[1], b_id:[1,2]}|
+----------------------+
Run Code Online (Sandbox Code Playgroud)

或者像这样

+---------------------+
| column1             |
+---------------------+
|{a_id:[3,5]}         |
+---------------------+
Run Code Online (Sandbox Code Playgroud)

我知道,如何检查顶级列是否存在,如这里所回答:How do I detection if a Spark DataFrame has a column

df.schema.fieldNames.contains("column_name")
Run Code Online (Sandbox Code Playgroud)

但是如何检查嵌套列?

Via*_*mov 7

您可以获取嵌套字段的架构作为结构,然后检查您的字段是否存在于其字段名称中:

val index = df.schema.fieldIndex("column1")
val is_b_id_present = df.schema(index).dataType.asInstanceOf[StructType]
                          .fieldNames.contains("b_id")
Run Code Online (Sandbox Code Playgroud)