我的文件中有数据:
2005, 08, 20, 50
2005, 08, 21, 52
2005, 08, 22, 38
2005, 08, 23, 70
数据是:年,月,日,温度。
我想读取此数据并输出逐年和逐月的温度。 例如:2015-08:38、50、52、70。 温度按升序排序。
相同的Spark Scala代码应该是什么? RDD转换中的答案将不胜感激。 到目前为止,到目前为止,我已经做到了:
val conf= new SparkConf().setAppName("demo").setMaster("local[*]")
val spark = new SparkContext(conf)
val input = spark.textFile("src/main/resources/someFile.txt")
val fields = input.flatMap(_.split(","))
我在想的是,将年月作为关键,然后将温度列表作为值。但是我无法将其纳入代码。
答案 0 :(得分:1)
val myData = sc.parallelize(Array((2005, 8, 20, 50), (2005, 8, 21, 52), (2005, 8, 22, 38), (2005, 8, 23, 70)))
myData.sortBy(_._4).collect
返回:
res1: Array[(Int, Int, Int, Int)] = Array((2005,8,22,38), (2005,8,20,50), (2005,8,21,52), (2005,8,23,70))
让您执行concat功能
答案 1 :(得分:1)
来自文件
val filesRDD = sc.textFile("/FileStore/tables/Weather2.txt",1)
val linesRDD = filesRDD.map(line => (line.trim.split(","))).map(entries=>(entries(0).toInt,entries(1).toInt,entries(2).toInt,entries(3).toInt))
linesRDD.sortBy(_._4).collect
返回:
res13: Array[(Int, Int, Int, Int)] = Array((2005,7,22,7), (2005,7,15,10), (2005,8,22,38), (2005,8,20,50), (2005,7,19,50), (2005,8,21,52), (2005,7,21,52), (2005,8,23,70))
您可以自己想到concat,如果sort值是通用的怎么办?有多种选择,但是我认为这可以回答您第一个形式不太正确的问题。