配置单元-如何使用Spark shell一次性从表的所有列中筛选出所有空值?


0

我用的是 spark外壳1.6。我想执行一次检查,将包含空值的所有行与不包含空值的行分开。更准确地说,我必须将它们分成两个不同的表(数据和错误)。问题是我有太多的列(42),所以一次检查一个是不可能的。

    数据的模式包含bigint、int、String和date格式。

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|
+---+----+---+

我来回答

写文章

提问题

面试题