3
我想创造一些元组共生矩阵一共生矩阵,见下图:如何创建一个Spark RDD
val rdd = sc.parallelize(Array(
Array("101","103","105"), Array("102","105"),Array("101","102","103","105"))
val coocMatrix = new ArrayBuffer[(String, Int)]()
// map
rdd.collect().foreach(x =>
{ for(i <- 0 to x.length-1)
{ for(j <- i+1 to x.length-1)
{ coocMatrix += (x(i)+"#"+x(j), 1) }}
// convert to rdd again
val rdd2 = sc.parallelize(coocMatrix)
// reduce
vall matrix = rdd2.collect().groupByKey()
所以我们得到以下数据终于
(101#103,2),(101#105,2),(102#105,2),(101#102,1),
(103#105,2),(102#103,1),(102#105,1)
这个算法非常慢,因为它是O(n * n),当有200万个元组时它是不可行的。有没有算法来计算这个共生矩阵?
这个工作,并且比2回路快得多!惊人!非常感谢! – victorming888