concat_ws()和college_list()配合=>实现多行转一行

2023-12-21 16:42:54

  1. concat_ws()

    • concat_ws()是“with separator”的缩写,它是一个用于连接字符串的函数。
    • ws代表“with separator”,即带有分隔符。
    • 这个函数的作用是将多个字符串连接起来,并在它们之间插入指定的分隔符。
    • 语法:concat_ws(separator, string1, string2, ...)
    • concat_ws()函数将两列数据连接起来,并在它们之间添加一个逗号作为分隔符。
  2. college_list()

    • college_list()可能是一个自定义函数,而不是一个标准的Python函数。
    • 根据名称猜测,这个函数可能是用来获取或生成一个大学列表的。
    • 具体的功能和实现取决于该函数的定义和上下文。

1.创建数据?

    val sc = new SparkSession.Builder()
      .config("hive.exec.dynamic.partition", "true")
      .config("hive.exec.dynamic.partition.mode", "nonstrict")
      .config(conf)
      .enableHiveSupport()
      .getOrCreate()
    val data = Seq(
      ("Alice", 20, "小白", Date.valueOf("2023-03-15")),
      ("Bob", 20, "Mathematics", Date.valueOf("2023-03-16")),
      ("Charlie", 21, "Physics", Date.valueOf("2023-03-17")),
      ("David", 21, "Chemistry", Date.valueOf("2023-03-18")),
      ("Eva", 22, "Computer Science", Date.valueOf("2023-03-19")),
      ("Frank", 20, "English", Date.valueOf("2023-03-20")),
      ("Grace", 22, "Spanish", Date.valueOf("2023-03-21")))
    import  sc.implicits._

    import sc.implicits._
    val df = data.toDF("name", "age", "address", "data_time")

2.处理数据

       
        //      1. collect_list将分组后的行转换为一个列表
       //      2. sort_array实现列表排序
       //      3. 用concat_ws是将排序后的"city"列表中的每个值用逗号,连接起来,形成一个字符串
       df.groupBy("age")
       .agg(concat_ws(",",sort_array(collect_list("name").as("name"),false)).as("concat_name")).show()

?

?

文章来源:https://blog.csdn.net/m0_69097184/article/details/135132603
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。