Spark scala如何计算行中的值

Spark scala how to count values in rows

我是 Spark 和 Scala 的新手...我必须读取数据文件并计算列和行中包含的值。数据集的结构如下:

0 0 2
0 2 2
0 2 0
2 0 0
0 0 0
0 1 0

为了统计每列中“2”的个数:

我导入了文件:

val ip = sc.textFile("/home/../data-scala.txt")

我创建了一个数组来保存我的结果

var ArrayCol = Array.ofDim[Long](3)

val cols = ip.map(line => line.split(" "))

for (i <- 0 to 2) {
    ArrayCol(i) = cols.map(col => col(i)).filter(_.contains("2")).count()
}

然后我数了数每列中“2”的个数。

现在我想对每一行做同样的事情。你有什么建议吗?

cols.map(r => r.count(_ == "2"))

或shell示例:

scala> val cols = sc.parallelize(List("0 1 2", "2 0 2")).map(_.split(" "))
scala> cols.map(_.count(_ == "2")).collect()

res1: Array[Int] = Array(1, 2)

好的谢谢

cols.map(r => r.count(_ == "2"))

可以很好地计算出每行中有多少个“2”。

你会如何计算每列中有多少个“2”? 我认为有比我更清楚的解决方案。

谢谢。