Scala 如何将CompactBuffer转换为List

Scala 如何将CompactBuffer转换为List,scala,group-by,rdd,Scala,Group By,Rdd,如何将CompactBuffer转换为List?一个例子如下: data.csv 1,Lokesh 2,Bhupesh 2,Amit 2,Ratan 2,Dinesh 1,Pavan 1,Tejas 2,Sheela 1,Kumar 1,Venkat val r = sc.textFile("data96/data.csv") val rm = r.map(x=>(x.split(",")(0), x.split(",")(1))) val r_grp = rm.groupByKey

如何将CompactBuffer转换为List?一个例子如下:

data.csv
1,Lokesh
2,Bhupesh
2,Amit
2,Ratan
2,Dinesh
1,Pavan
1,Tejas
2,Sheela
1,Kumar
1,Venkat
val r = sc.textFile("data96/data.csv")
val rm = r.map(x=>(x.split(",")(0), x.split(",")(1)))

val r_grp = rm.groupByKey
数组[(String,Iterable[String])]=数组((2,CompactBuffer,Bhupesh, Amit,Ratan,Dinesh,Sheela)),(1,CompactBuffer(洛克什,帕万,特哈斯, 库马尔,文卡特)

因此,很容易获得CompactBuffer格式。下面将以列表格式生成结果,这就是我想要展示的

val swapped = rm.map(item=>item.swap)

val com= rm.combineByKey(List(_), (x:List[String], y:String) =>y::x,(x:List[String], y:List[String])=>x:::y) //this is terrible to me, I don't want to do this way
数组[(String,List[String])]=Array((2,List), 布比什、希勒)(1,名单(洛克什、文卡特、库马尔、特哈斯、帕万)

生成的结果:

hdfs dfs -cat data96/s43/*
(2,List(Dinesh, Ratan, Amit, Bhupesh, Sheela))
(1,List(Lokesh, Venkat, Kumar, Tejas, Pavan))
以CompactBuffer格式获取结果要容易得多,但我需要获取列表格式,不想使用高亮显示的命令


顺便问一下,如何在asc或desc中对每个组进行进一步排序?

您只需将
CopmpactBuffer
更改为使用
toList
方法列出即可

val r_grp = rm.groupByKey
// After groupBykey
(2,CompactBuffer(Bhupesh, Amit, Ratan, Dinesh, Sheela))
(1,CompactBuffer(Lokesh, Pavan, Tejas, Kumar, Venkat))
只需使用toList转换为List,然后使用sortBy对其进行排序

val com = r_grp.map(x => (x._1, x._2.toList.sortBy(x => x)))
com.foreach(println)
输出:

(1,List(Kumar, Lokesh, Pavan, Tejas, Venkat))
(2,List(Amit, Bhupesh, Dinesh, Ratan, Sheela))

您只需使用
toList
方法将
CopmpactBuffer
更改为list即可

val r_grp = rm.groupByKey
// After groupBykey
(2,CompactBuffer(Bhupesh, Amit, Ratan, Dinesh, Sheela))
(1,CompactBuffer(Lokesh, Pavan, Tejas, Kumar, Venkat))
只需使用toList转换为List,然后使用sortBy对其进行排序

val com = r_grp.map(x => (x._1, x._2.toList.sortBy(x => x)))
com.foreach(println)
输出:

(1,List(Kumar, Lokesh, Pavan, Tejas, Venkat))
(2,List(Amit, Bhupesh, Dinesh, Ratan, Sheela))

请指定您在标记中使用的语言,您可以从代码中看出它是Scala.:),不管是Scala还是Python,这都无关紧要。请指定您在标记中使用的语言。您可以从代码中看出它是Scala.:),不管是Scala还是Python,这都不重要。