Spark Scala, как проверить наличие вложенного столбца в кадре данных - PullRequest
3 голосов
/ 14 марта 2019

Я читаю фрейм данных из файла паркета, который имеет вложенные столбцы (struct). Как проверить наличие вложенных столбцов?

Это может быть так

+----------------------+
| column1              |
+----------------------+
|{a_id:[1], b_id:[1,2]}|
+----------------------+

или как это

+---------------------+
| column1             |
+---------------------+
|{a_id:[3,5]}         |
+---------------------+

Я знаю, как проверить, присутствует ли столбец верхнего уровня, как здесь ответили: Как определить, есть ли в Spark DataFrame столбец :

df.schema.fieldNames.contains("column_name")

Но как я могу проверить наличие вложенных столбцов?

1 Ответ

3 голосов
/ 14 марта 2019

Вы можете получить схему вложенного поля в виде структуры, а затем проверить, присутствует ли ваше поле в именах полей:

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