val rdd6: DD[(String,nt)] = rdd5.sortBy(_._2, ascending = false)为什么要写false
时间: 2024-03-29 17:39:31 浏览: 18
`sortBy`函数的第二个参数是`ascending`,用来指定排序顺序是升序还是降序。当`ascending`为`false`时,表示按照降序排列,也就是从大到小排列;当`ascending`为`true`时,表示按照升序排列,也就是从小到大排列。在这个例子中,根据上下文推断,`sortBy`函数是要将`rdd5`按照第二个元素的大小进行排序,而且是按照从大到小的顺序排列,所以`ascending`参数设置为`false`。
相关问题
完善如下代码:import org.apache.spark.rdd.RDD import org.apache.spark.sql.{DataFrame,SparkSession} object First_Question { case class Student(name:String,age:String,sex:String) def main(args: Array[String]): Unit = { val spark: SparkSession = SparkSession .builder() .appName("First_Question") .master("local[*]") .getOrCreate() val rdd: RDD[String] = spark.sparkContext.parallelize(List("张三,20,男", "李四,22,男", "李婷,23,女","赵六,21,男")) val temp: RDD[Student] = rdd.map(s => { val split_rdd: Array[String] = s.split(",") Student(split_rdd(0), split_rdd(1), split_rdd(2)) }) import spark.implicits._ // DataFrame 源数据 val dataFrame: DataFrame = temp.toDF() spark.stop() } }
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.{DataFrame, SparkSession}
object First_Question {
case class Student(name: String, age: Int, sex: String)
def main(args: Array[String]): Unit = {
val spark: SparkSession = SparkSession
.builder()
.appName("First_Question")
.master("local[*]")
.getOrCreate()
val rdd: RDD[String] = spark.sparkContext.parallelize(List("张三,20,男", "李四,22,男", "李婷,23,女", "赵六,21,男"))
val temp: RDD[Student] = rdd.map(s => {
val split_rdd: Array[String] = s.split(",")
Student(split_rdd(0), split_rdd(1).toInt, split_rdd(2))
})
import spark.implicits._
// DataFrame 源数据
val dataFrame: DataFrame = temp.toDF()
spark.stop()
}
}
优化代码val actionRDD: RDD[UserVisitAction] = textRDD.map(line => { val fields: Array[String] = line.split("_") UserVisitAction(fields(0), fields(1).toLong, fields(2), fields(3).toLong, fields(4), fields(5),
fields(6).toLong, fields(7).toLong, fields(8), fields(9), fields(10), fields(11), fields(12).toLong) }).cache()
可以使用 mapPartitions() 函数来优化代码,这样可以减少创建对象的次数,提高代码的效率。具体实现可以参考以下代码:
val actionRDD: RDD[UserVisitAction] = textRDD.mapPartitions(iter => { val dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") iter.map(line => { val fields: Array[String] = line.split("_") UserVisitAction(fields(0), fields(1).toLong, fields(2), fields(3).toLong, fields(4), fields(5), dateFormat.parse(fields(6)).getTime, fields(7).toLong, fields(8), fields(9), fields(10), fields(11), fields(12).toLong) }) }).cache()
这样可以将创建 SimpleDateFormat 对象的次数减少到每个分区一次,从而提高代码的效率。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)