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 | [计算机病毒事件,蠕虫事件,特洛伊木马事件] |
+----------+------------------------------------------------+
Spark中SQL列和并为一行的更多相关文章
- Spark(Hive) SQL中UDF的使用(Python)
相对于使用MapReduce或者Spark Application的方式进行数据分析,使用Hive SQL或Spark SQL能为我们省去不少的代码工作量,而Hive SQL或Spark SQL本身内 ...
- Spark(Hive) SQL中UDF的使用(Python)【转】
相对于使用MapReduce或者Spark Application的方式进行数据分析,使用Hive SQL或Spark SQL能为我们省去不少的代码工作量,而Hive SQL或Spark SQL本身内 ...
- 神奇的 SQL 之层级 → 为什么 GROUP BY 之后不能直接引用原表中的列
前言 开心一刻 感觉不妙呀,弟弟舔它! 不该舔的,舔到怀疑人生了...... GROUP BY 后 SELECT 列的限制 标准 SQL 规定,在对表进行聚合查询的时候,只能在 SELECT 子句中写 ...
- [转]神奇的 SQL 之层级 → 为什么 GROUP BY 之后不能直接引用原表中的列
原文:https://www.cnblogs.com/youzhibing/p/11516154.html 这篇文章,对group by的讲解不错 -------------------------- ...
- 拆分Sql列中内容的拆分
拆分Sql列中内容的拆分. /*按照符号分割字符串*/ create function [dbo].[m_split](@c varchar(2000),@split varchar(2)) retu ...
- sql得到表中的列信息
取列全部用的 sys. 中的表 CTE:WITH name AS() 用法: sql树形查询 ①主键信息 SELECT ic.column_id, ic.index_column_id, ic.o ...
- Python:读取txt中按列分布的数据,并将结果保存在Excel文件中 && 保存每一行的元素为list
import xlwt import os def write_excel(words,filename): #写入Excel的函数,words是数据,filename是文件名 wb=xlwt.Wor ...
- 【SQL】Update中使用表别名、如何用表中一列值替换另一列的所有值
Update中使用表别名 select中的表别名: select * from TableA as ta update中的表别名: update ta from TableA as ta 如何用表中一 ...
- Spark(Hive) SQL数据类型使用详解(Python)
Spark SQL使用时需要有若干“表”的存在,这些“表”可以来自于Hive,也可以来自“临时表”.如果“表”来自于Hive,它的模式(列名.列类型等)在创建时已经确定,一般情况下我们直接通过Spar ...
随机推荐
- win下开机不登陆系统自动运行程序的解决方案
文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作. Jet的电脑可以定时开机了,但是他希望XP系统启动后在不登陆用户的情况下运行锐捷和 ...
- pycharm创建scrapy项目教程及遇到的坑
最近学习scrapy爬虫框架,在使用pycharm安装scrapy类库及创建scrapy项目时花费了好长的时间,遇到各种坑,根据网上的各种教程,花费了一晚上的时间,终于成功,其中也踩了一些坑,现在整理 ...
- 从 Python 快速启动 CGI 服务器
很多人知道 Python 3 可以快速启动一个 HTTP 服务器: $ python3 -m http.server 8000 今天我查阅 http.server 模块发现它支持运行 CGI 脚本,只 ...
- Istio 是什么?
使用云平台可以为组织提供丰富的好处.然而,不可否认的是,采用云可能会给 DevOps 团队带来压力.开发人员必须使用微服务以满足应用的可移植性,同时运营商管理了极其庞大的混合和多云部署.Istio 允 ...
- ImCash:币圈英文术语大全
近年来随着数字货币的火热,在全世界范围内涌现出了一群数字货币的“发烧友”和忠实投资者,他们形成了自己的圈子“币圈”,并且有了自己的文化和语言,今天就让我们一起来了解一下外国币圈有哪些有意思的英文“专用 ...
- java做图片点击文字验证码
https://blog.csdn.net/qq_27721169/article/details/82769093
- may be a diary?
[About Me] SD某弱校高二的OIer. qq 995681518,欢迎一起交流~ 喵喵喵喵喵 "当你想要颓废的那一刻,想一想当初为什么走到了这里." 以下文字充满负面情绪 ...
- C++入门笔记(一)零碎基础知识
零碎基础知识 一.创建和运行程序 1.使用文本编辑器编写程序,保存为文件,该文件就叫源代码. 2.编译源代码:运行一个程序,将源代码翻译为主机使用的内部语言----机器语言.包含了 编译后程序的文件就 ...
- Xmanager6 下载地址
Xmanager-6标准版下载地址 http://xiazai.xshellcn.com/trial/Xmanager-6.0.0080_yy.exe Xmanager-6企业版下载地址 http:/ ...
- json格式的数据及遍历:
代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...