2016-04-29 75 views
0

我是新來的火花編程,我有一個名爲「test1.in」,其中包含在以下方式隨機數的數據文件 -如何在Spark-Scala中對包含整數的文本文件進行排序?

123 
34 
1 
45 
65 

我想這些數字用火花和排序輸出寫入到一個新的文件。這裏是我的代碼到目前爲止 -

import org.apache.spark.{SparkContext, SparkConf} 

val conf = new SparkConf().setMaster("local[*]").setAppName("SortingApp") 
val sc = new SparkContext(conf) 

val data = sc.textFile("src/main/resources/test1.in") 
val d1 = data.map(_.sorted) 
d1.foreach(println _) 

結果不是預期的結果。

+0

你可能想將其轉換爲「Int」然後對其進行分類。 –

+0

你的意思是這樣 - 'data.map(_。toInt).map(_。sorted)' – userxxx

回答

0

當你撥打:

data.map(_.sorted) 

你映射每個記錄(這是一個字符串)進入它的「分類」的版本,這意味着字符串被轉換成chars序列,這些字符進行排序。

你需要做的是使用map,你的功能適用於單獨給每個記錄(因此它不能對記錄進行排序),但使用RDD.sortBy

data.map(_.toInt).sortBy(t => t) 

t => t是返回輸入as-as的身份函數,可以用Scala的內置通用實現替代:

data.map(_.toInt).sortBy(identity) 

或者,最短的版本:

input.sortBy(_.toInt) 

(這將返回RDD[String]類型的結果)

0

使用下面一行的文本文件中的數據轉換成Int在排序:

val d1 = data.map(_.toInt).sorted 
相關問題