Spark scala是列中最常用的项
我有一个RDD,有4列,如下所示:(1列-名称,2列-标题,3列-视图,4列-大小) 我想选择最常出现的标题(基于列标题)。 输出应为:Spark scala是列中最常用的项,scala,apache-spark,rdd,Scala,Apache Spark,Rdd,我有一个RDD,有4列,如下所示:(1列-名称,2列-标题,3列-视图,4列-大小) 我想选择最常出现的标题(基于列标题)。 输出应为: Droomstele在数据中出现3次 如何对标题进行分组,然后从中获取最大数量?这里有一种可能性: 给定此输入RDD: var input = sc .parallelize(Array( "aa Droomstele 1 8030", "aa Wikiquote 1 78261", "aa Special 1 20493",
Droomstele
在数据中出现3次 如何对标题进行分组,然后从中获取最大数量?这里有一种可能性: 给定此输入RDD:
var input = sc
.parallelize(Array(
"aa Droomstele 1 8030",
"aa Wikiquote 1 78261",
"aa Special 1 20493",
"aa.b Droomstele 7 4749",
"aa.b Droomstele 1 4751",
"af Blowback 2 16896",
"af Bluff 2 21442",
"en Bloubok 1 0"
))
.map(row => row.split(" "))
下面返回Droomstele:
input.map(split => (split(1), 1)) // RDD[("Droomstele", 1), ...]
.reduceByKey(_ + _) // RDD[..., ("Droomstele", 3), ...]
.sortBy(_._2) // RDD[("Droomstele", 3), ...] (Droomstele is first)
.first // ("Droomstele", 3)
._1 // "Droomstele"
或者,稍微快一点:
input.map(split => (split(1), 1)) // RDD[("Droomstele", 1), ...]
.reduceByKey(_ + _) // RDD[..., ("Droomstele", 3), ...]
.takeOrdered(1)(Ordering[Int].reverse.on(_._2)) // Array[("Droomstele", 3)]
.head // ("Droomstele", 3)
._1 // "Droomstele"
这是一种可能性:
给定此输入RDD:
var input = sc
.parallelize(Array(
"aa Droomstele 1 8030",
"aa Wikiquote 1 78261",
"aa Special 1 20493",
"aa.b Droomstele 7 4749",
"aa.b Droomstele 1 4751",
"af Blowback 2 16896",
"af Bluff 2 21442",
"en Bloubok 1 0"
))
.map(row => row.split(" "))
下面返回Droomstele:
input.map(split => (split(1), 1)) // RDD[("Droomstele", 1), ...]
.reduceByKey(_ + _) // RDD[..., ("Droomstele", 3), ...]
.sortBy(_._2) // RDD[("Droomstele", 3), ...] (Droomstele is first)
.first // ("Droomstele", 3)
._1 // "Droomstele"
或者,稍微快一点:
input.map(split => (split(1), 1)) // RDD[("Droomstele", 1), ...]
.reduceByKey(_ + _) // RDD[..., ("Droomstele", 3), ...]
.takeOrdered(1)(Ordering[Int].reverse.on(_._2)) // Array[("Droomstele", 3)]
.head // ("Droomstele", 3)
._1 // "Droomstele"
我检测到这个托管内存泄漏;大小=5281848字节。由于我的数据文件很大,你能建议一种更有效的方法吗;这可能会有所帮助:我检测到了这个托管内存泄漏;大小=5281848字节。由于我的数据文件很大,你能建议一种更有效的方法吗;这可能有助于: