-1

我正在使用Spark shell 1.6。我想执行检查以将包含空值的所有行与不包含空值的行分开。更准确地说,我必须将它们分成 2 个不同的表(数据和错误)。问题是我有太多的列(42),所以一次检查一个是不可能的。可能有帮助的几点:

  1. 数据架构包含 bigint、int、String 和日期格式。
  2. 使用的表都是 hive 表。
  3. 我也有数据的 CSV(但必须使用 spark shell)。
4

1 回答 1

0
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|
+---+----+---+
于 2020-03-13T04:38:37.833 回答