我是新手来编程,我有一个名为“test1.in”的数据文件,其中包含以下方式的随机数字 -
123
34
1
45
65
我想使用spark对这些数字进行排序,并将输出写入新文件。这是我到目前为止的代码 -
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 :(得分:2)
致电时:
data.map(_.sorted)
您将每条记录(这是一个字符串)映射到它""排序"版本,这意味着将字符串转换为chars
的序列,并对这些字符进行排序。
您需要做的是不使用map
将您的功能分别应用于每条记录(因此它无法对记录进行排序),但使用RDD.sortBy
:
data.map(_.toInt).sortBy(t => t)
t => t
是用于返回输入的标识函数,可以用Scala的内置泛型实现替换:
data.map(_.toInt).sortBy(identity)
或者,最短的版本:
input.sortBy(_.toInt)
(将返回类型RDD[String]
的结果)
答案 1 :(得分:0)
使用以下行将文本文件数据转换为Int
,然后对其进行排序:
val d1 = data.map(_.toInt).sorted