c语言sscanf函数的用法是什么
304
2022-11-15
Spark中SQL列和并为一行
在使用数据库的时候,需要将查询出来的一列按照逗号合并成一行。
原表名字为 TABLE ,表中的部分原始数据为:
+---------+------------------------+| BASIC | NAME |+----------+------------------------+| 1 | 有害程序事件(MI) || 0 | 计算机病毒事件 || 0 | 蠕虫事件 || 0 | 特洛伊木马事件 |+----------+------------------------+
查询代码为:
select GROUP_CONCAT(NAME SEPARATOR ',') as NAME from TABLE where BASIC=0;
得到部分结果为:
+---------------------------------------------------------+ | NAME |+---------------------------------------------------------+| 计算机病毒事件,蠕虫事件,特洛伊木马事件 |+---------------------------------------------------------+
但是在 spark 中没有 GROUP_CONCAT 命令,查找后发现命令 concat_ws :
ResultDF.createOrReplaceTempView("BIGDATA")val dataDF=spark.sql("select BASIC,concat_ws(',',collect_set(NAME)) as NAMES from BIGDATA group by BASIC")
得到结果:
+----------+------------------------------------------------+| BASIC | NAMES |+----------+------------------------------------------------+| 1 | 有害程序事件(MI) || 0 | 计算机病毒事件,蠕虫事件,特洛伊木马事件 |+----------+------------------------------------------------+
也可以用另一个方法:
import org.apache.spark.sql.functions._ ResultDF.groupBy("BASIC ") .agg(collect_set("NAME")) .show(10,false)
但是得到的结果为 List :
+----------+------------------------------------------------+| BASIC | NAMES |+----------+------------------------------------------------+| 1 | 有害程序事件(MI) || 0 | [计算机病毒事件,蠕虫事件,特洛伊木马事件] |+----------+------------------------------------------------+
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~