Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 订购RDD[字符串]_Scala_Apache Spark - Fatal编程技术网

Scala 订购RDD[字符串]

Scala 订购RDD[字符串],scala,apache-spark,Scala,Apache Spark,考虑 val animals = List("penguin","ferret","cat").toSeq val rdd = sc.makeRDD(animals, 1) 我想订购这个RDD。我是Scala新手,对如何实现这一点有点困惑。可以找到RDD文档。请按以下顺序查看: sortBy[K]( f: (T) ⇒ K, ascending: Boolean = true, numPartitions: Int = this.partitions.size ) K是您排序

考虑

val animals = List("penguin","ferret","cat").toSeq
val rdd = sc.makeRDD(animals, 1) 

我想订购这个RDD。我是Scala新手,对如何实现这一点有点困惑。

可以找到RDD文档。请按以下顺序查看

sortBy[K](
  f: (T) ⇒ K, 
  ascending: Boolean = true, 
  numPartitions: Int = this.partitions.size
)
K
是您排序所依据的RDD片段的类型
f
是一个函数,您可以使用
def
在别处定义并按名称传递它,也可以在线匿名创建一个函数(更像scala)<代码>升序
numPartitions
应该是自解释的

因此,考虑到所有这些,请尝试:

rdd.sortBy[String]({animal => animal})
然后试试这个:

rdd.sortBy[String]({animal => animal}, false)
然后这个,按照动物名称中字母“e”的数量,从大到小对RDD进行排序:

rdd.sortBy[Int]({a => a.split("").filter(char => char == "e").size}, false)

需要注意的是,原始的
rdd
没有被排序——一个新的、排序的rdd由操作返回。

我不知道spark,但也许这就是你的答案:在第一种情况下,我们只返回我们给出的,但我们遵循字母顺序,这是为什么?它与隐式排序[K]有什么关系?它遵循默认排序[K],其中K与sortBy[K]中的K相同。我相信您可以重写排序[K],但我从来没有必要这样做。在这种情况下,似乎您可以完全忽略匿名函数?这是让我困惑的一部分,但我确实理解您所列出的内容,这非常有帮助。匿名函数只允许您选择RDD行中用于比较的部分。是的,在您的示例中,它是微不足道的,因为它使用整行。但是如果你需要的话,你可以做其他更有趣的事情。啊哈,RDD莱姆中更有意义的部分。我试着通过,但它抛出了一个错误,这不应该使用整条线吗?