Chr*_*ris 6 scala apache-spark
考虑
val animals = List("penguin","ferret","cat").toSeq
val rdd = sc.makeRDD(animals, 1)
Run Code Online (Sandbox Code Playgroud)
我想订购这个RDD.我是Scala的新手,对于如何做到这一点感到有些困惑.
RDD文档可以在这里找到.看看sortBy:
sortBy[K](
f: (T) ? K,
ascending: Boolean = true,
numPartitions: Int = this.partitions.size
)
Run Code Online (Sandbox Code Playgroud)
这K是您要排序的RDD的片段类型.f是一个函数,您可以在其他地方定义def并按名称传递它,也可以在行中匿名创建一个函数(更像scala).ascending并且numPartitions应该是自我解释的.
所以,考虑到这一切,尝试:
rdd.sortBy[String]({animal => animal})
Run Code Online (Sandbox Code Playgroud)
然后尝试这个:
rdd.sortBy[String]({animal => animal}, false)
Run Code Online (Sandbox Code Playgroud)
然后是这个,它将RDD按动物名称中的字母"e"的数量从最多到最小排序:
rdd.sortBy[Int]({a => a.split("").filter(char => char == "e").size}, false)
Run Code Online (Sandbox Code Playgroud)
应该注意的是原始文件rdd没有排序 - 操作返回一个新的,排序的RDD.
| 归档时间: |
|
| 查看次数: |
3069 次 |
| 最近记录: |