使用reduce来连接RDD [String]的成员时指定顺序

时间:2016-02-09 09:47:29

标签: apache-spark

我正在尝试reduce()功能,所以我尝试了以下内容:

scala> val stringSeq = Seq("The","quick", "brown", "fox") 
stringSeq: Seq[String] = List(The, quick, brown, fox)

从中创建一个RDD:

scala> val stringSeqRDD=sc.parallelize(stringSeq)
stringSeqRDD: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[4] at parallelize at <console>:29

连接元素:

scala> stringSeqRDD.reduce((x,y) => (x + " " + y))
res3: String = quick The brown fox

我的问题是如何对我连接的字符串强加一个排序?我是否必须首先转换为PairRDD并根据键进行排序以生成&#34;快速棕色狐狸&#34;结果呢?

1 个答案:

答案 0 :(得分:1)

您可以使用foldLeft()foldRight()维护订单。 在您的情况下,foldLeft()将有效。

stringseq.foldLeft("")((x,y)=>(x+" "+y))