2016-04-29 97 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 
相关问题