2015-07-22 3 views
1

Я новичок как в Spark, так и в Scala ... и мне нужно прочитать файл данных и подсчитать значение, которое содержится в обоих столбцах и строках. Набор данных структурирована следующим образом: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», содержащихся в каждом столбце.

Теперь я хотел бы сделать то же самое для каждой строки. Есть ли у вас предложения?

ответ

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

Или оболочки пример:

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) 
0

Ok спасибо

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

прекрасно работает, чтобы подсчитать, сколько "2" есть в каждой строке.

Как вы бы описали, сколько «2» есть в каждом столбце? Я думаю, что есть более четкое решение, чем мое.

Спасибо.

Смежные вопросы