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”?
我认为有比我更清楚的解决方案。
谢谢。
我是 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”? 我认为有比我更清楚的解决方案。
谢谢。