如何在scala中删除空数组

时间:2017-03-17 15:15:16

标签: arrays scala apache-spark

input: (Array[Int],Array[Int])

 ex) (Array(1),Array(2)), (Array(),Array()), (Array(4),Array(8)), ...

如何删除空数组?

预期输出

 ex) (Array(1),Array(2)), (Array(4),Array(8))...

1 个答案:

答案 0 :(得分:2)

您可以使用filter。如果你有一个清单:

val lst = List((Array(1),Array(2)), (Array(),Array()), (Array(4),Array(8)))

lst.filterNot{ case (x, y) => x.isEmpty && y.isEmpty }
// res58: List[(Array[_ <: Int], Array[_ <: Int])] = List((Array(1),Array(2)), (Array(4),Array(8)))

如果您有RDD:

val rdd = sc.parallelize(lst)
// rdd: org.apache.spark.rdd.RDD[(Array[_ <: Int], Array[_ <: Int])] = ParallelCollectionRDD[44] at parallelize at <console>:27

rdd.filter{ case (x, y) => ! (x.isEmpty && y.isEmpty) }.collect
// res60: Array[(Array[_ <: Int], Array[_ <: Int])] = Array((Array(1),Array(2)), (Array(4),Array(8)))