Как отфильтровать все нулевые значения из всех столбцов таблицы в одном go с помощью Spark-shell? - PullRequest
0 голосов
/ 13 марта 2020

Я использую Spark shell 1.6 . Я хочу выполнить проверку, чтобы отделить все строки, содержащие нулевые значения, от тех, которые этого не делают. Точнее, я должен разделить их на 2 разные таблицы (данные и ошибки). Проблема в том, что у меня слишком много столбцов (42), поэтому проверка их по одному исключается. Вот некоторые моменты, которые могут помочь:

  1. Схема данных содержит форматы bigint, int, String и даты.
  2. Все используемые таблицы являются таблицами кустов.
  3. У меня есть CSV для данных также (но использование искровой оболочки является обязательным).

1 Ответ

0 голосов
/ 13 марта 2020
scala> val data = Seq(("1","one",null),(null,"2","null"),("3",null,null),(null,null,null),("4","four","IV")).toDF
scala> data.show
+----+----+----+
|  _1|  _2|  _3|
+----+----+----+
|   1| one|null|
|null|   2|null|
|   3|null|null|
|null|null|null|
|   4|four|  IV|
+----+----+----+
scala> val error = data.filter(x=>x.anyNull)
scala> error.show
+----+----+----+
|  _1|  _2|  _3|
+----+----+----+
|   1| one|null|
|null|   2|null|
|   3|null|null|
|null|null|null|
+----+----+----+
scala> val correct_data =data.except(error)
scala> correct_data.show
+---+----+---+
| _1|  _2| _3|
+---+----+---+
|  4|four| IV|
+---+----+---+
...