Apache Spark - Java Проверить пустые значения в столбце структуры - PullRequest
0 голосов
/ 20 апреля 2020

Я использую spark 2.3+, у меня есть массив struct, и я ОБЪЯВЛЯЮ его для обычного типа структуры, см. Схему ниже

 |-- ARRAY_OF_STRUCT: array (nullable = true)
 |    |-- element: struct (containsNull = true)
 |    |    |-- FLAG: string (nullable = true)
 |    |    |-- CODE: string (nullable = true)
 |    |    |-- SOURCE: string (nullable = true)
 |-- explode: struct (nullable = true)
 |    |-- FLAG: string (nullable = true)
 |    |-- CODE: string (nullable = true)
 |    |-- SOURCE: string (nullable = true)

Вопрос в том, как применить пустую проверку при разнесении столбец? Я хочу сохранить только строки со значениями, см. Пример

+--------------------------------------------------------------------------------+-------------+
|ARRAY_OF_STRUCT                                                                 |explode      |
+--------------------------------------------------------------------------------+-------------+
|[[N, , 000000], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ]] |[N, , 000000]|
|[[N, , 000000], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ]] |[, , ]       |
|[[N, , 000000], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ]] |[, , ]       |
|[[N, , 000000], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ]] |[, , ]       |
|[[N, , 000000], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ]] |[, , ]       |
|[[N, , 000000], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ]] |[, , ]       |
|[[N, , 000000], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ]] |[, , ]       |
|[[N, , 000000], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ]] |[, , ]       |
|[[N, , 000000], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ]] |[, , ]       |
+--------------------------------------------------------------------------------+-------------+

Я хочу сохранить только первую строку, поскольку в столбце разнесения есть некоторые значения. как ниже ds

+--------------------------------------------------------------------------------+-------------+
|ARRAY_OF_STRUCT                                                                 |explode      |
+--------------------------------------------------------------------------------+-------------+
|[[N, , 000000], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ], [, , ]] |[N, , 000000]|
+--------------------------------------------------------------------------------+-------------+

Я знаю, что могу проверять столбцы один за другим, но это неэффективно, когда нужно проверить много полей. ИЛИ: если есть что-то, что может помочь мне выбросить эти элементы в массиве, прежде чем я взорвусь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...