在使用数据库的时候,需要将查询出来的一列按照逗号合并成一行。

原表名字为 TABLE ,表中的部分原始数据为:

  1. +---------+------------------------+
  2. | BASIC | NAME |
  3. +----------+------------------------+
  4. | 1 | 有害程序事件(MI) |
  5. | 0 | 计算机病毒事件 |
  6. | 0 | 蠕虫事件 |
  7. | 0 | 特洛伊木马事件 |
  8. +----------+------------------------+

查询代码为:

  1. select GROUP_CONCAT(NAME SEPARATOR ',') as NAME from TABLE where BASIC=0;

得到部分结果为:

  1. +---------------------------------------------------------+
  2. | NAME |
  3. +---------------------------------------------------------+
  4. | 计算机病毒事件,蠕虫事件,特洛伊木马事件 |
  5. +---------------------------------------------------------+

但是在 spark 中没有 GROUP_CONCAT 命令,查找后发现命令 concat_ws

  1. ResultDF.createOrReplaceTempView("BIGDATA")
  2. val dataDF=spark.sql("select BASIC,concat_ws(',',collect_set(NAME)) as NAMES from BIGDATA group by BASIC")

得到结果:

  1. +----------+------------------------------------------------+
  2. | BASIC | NAMES |
  3. +----------+------------------------------------------------+
  4. | 1 | 有害程序事件(MI) |
  5. | 0 | 计算机病毒事件,蠕虫事件,特洛伊木马事件 |
  6. +----------+------------------------------------------------+

也可以用另一个方法:

  1. import org.apache.spark.sql.functions._
  2. ResultDF.groupBy("BASIC ")
  3. .agg(collect_set("NAME"))
  4. .show(10,false)

但是得到的结果为 List

  1. +----------+------------------------------------------------+
  2. | BASIC | NAMES |
  3. +----------+------------------------------------------------+
  4. | 1 | 有害程序事件(MI) |
  5. | 0 | [计算机病毒事件,蠕虫事件,特洛伊木马事件] |
  6. +----------+------------------------------------------------+

Spark中SQL列和并为一行的更多相关文章

  1. Spark(Hive) SQL中UDF的使用(Python)

    相对于使用MapReduce或者Spark Application的方式进行数据分析,使用Hive SQL或Spark SQL能为我们省去不少的代码工作量,而Hive SQL或Spark SQL本身内 ...

  2. Spark(Hive) SQL中UDF的使用(Python)【转】

    相对于使用MapReduce或者Spark Application的方式进行数据分析,使用Hive SQL或Spark SQL能为我们省去不少的代码工作量,而Hive SQL或Spark SQL本身内 ...

  3. 神奇的 SQL 之层级 → 为什么 GROUP BY 之后不能直接引用原表中的列

    前言 开心一刻 感觉不妙呀,弟弟舔它! 不该舔的,舔到怀疑人生了...... GROUP BY 后 SELECT 列的限制 标准 SQL 规定,在对表进行聚合查询的时候,只能在 SELECT 子句中写 ...

  4. [转]神奇的 SQL 之层级 → 为什么 GROUP BY 之后不能直接引用原表中的列

    原文:https://www.cnblogs.com/youzhibing/p/11516154.html 这篇文章,对group by的讲解不错 -------------------------- ...

  5. 拆分Sql列中内容的拆分

    拆分Sql列中内容的拆分. /*按照符号分割字符串*/ create function [dbo].[m_split](@c varchar(2000),@split varchar(2)) retu ...

  6. sql得到表中的列信息

    取列全部用的 sys. 中的表 CTE:WITH name AS() 用法:   sql树形查询 ①主键信息 SELECT ic.column_id, ic.index_column_id, ic.o ...

  7. Python:读取txt中按列分布的数据,并将结果保存在Excel文件中 && 保存每一行的元素为list

    import xlwt import os def write_excel(words,filename): #写入Excel的函数,words是数据,filename是文件名 wb=xlwt.Wor ...

  8. 【SQL】Update中使用表别名、如何用表中一列值替换另一列的所有值

    Update中使用表别名 select中的表别名: select * from TableA as ta update中的表别名: update ta from TableA as ta 如何用表中一 ...

  9. Spark(Hive) SQL数据类型使用详解(Python)

    Spark SQL使用时需要有若干“表”的存在,这些“表”可以来自于Hive,也可以来自“临时表”.如果“表”来自于Hive,它的模式(列名.列类型等)在创建时已经确定,一般情况下我们直接通过Spar ...

随机推荐

  1. SQL查询时,根据日期范围查询周

    周数据会有weekbegin和weekend两个字段,用来描述周的开始日期和结束日期. 现在项目中的日历控件不支持周查询,只支持日期查询,所以目前面临的问题是,根据时间范围,查询周. 最终sql如下: ...

  2. Quartz+JAVA+Servlet实现任务调度系统(简洁)

    前言 该系统使用场景: 在12306上买了一张火车票,30分钟内需要支付(需要添加一个倒计时),30分钟还没有支付就请求取消订单的接口(自动根据url请求),如果支付了收到了支付的回调通知后,就删除计 ...

  3. [SCOI2015]国旗计划

    Description: A 国正在开展一项伟大的计划 -- 国旗计划.这项计划的内容是边防战士手举国旗环绕边境线奔袭一圈.这项计划需要多名边防战士以接力的形式共同完成,为此,国土安全局已经挑选了 \ ...

  4. 加固后,上传play store, 在 google play store 下载应用安装后,打开签名校验失败

    在Google Play Console. (Google Play App Signing )签署您的应用 在创建应用时: 会有个“ Google Play App Signing” 的东西,提示使 ...

  5. layui select使用问题

    1.需要引用form模板 layui.use(['form'], function () { var form = layui.form; }); 2.html代码 <div class=&qu ...

  6. 浅谈MVC模式与MVVM模式的区别

    MVC模式: M:Model(数据模型),用于存放数据 V:View(视图),也就是用户界面 C:Controller是Model和View的协调者,Controller把Model中的数据拿过来给V ...

  7. js原型与继承

    demofunction Fun(){}
var foo = new Fun();foo.__proto__ === Fun.prototype 摘要 1.js本身不提供类实现,es6引入了class ...

  8. QEMU KVM Libvirt手册(11): Managing Storage

    When managing a VM Guest on the VM Host Server itself, it is possible to access the complete file sy ...

  9. Lesson 27 A wet night

    Text Late in the afternoon, the boys put up their tent in the middle of a feild. As soon as this was ...

  10. leetcode-查找和替换模式

    一.题目描述 你有一个单词列表 words 和一个模式  pattern,你想知道 words 中的哪些单词与模式匹配.如果存在字母的排列 p ,使得将模式中的每个字母 x 替换为 p(x) 之后,我 ...