@Test
def functionTest() = {
Logger.getLogger("org").setLevel(Level.WARN)
val spark = getSpark("functionTest")
val sc = spark.sparkContext
import spark.implicits._ //-------------------------
val stus = Seq(Student(1001, "jack", "M", 20),
Student(1004, "mary", "F", 18),
Student(1017, "alice", "F", 23),
Student(1026, "tom", "M", 20),
Student(1007, "leo", "M", 22),
Student(1008, "wood", "M", 22)).toDS() /* //---------select----------
stus.select("id","name").show()
stus.select($"id",$"name",$"age"+10).show()
import org.apache.spark.sql.functions._
stus.select(col("id"),col("name")).show()
stus.select(stus("id"),stus("gender")).show()
stus.selectExpr("id","name","age/10").show() //-----filter == where------
stus.filter(stu => stu.age >22).show()
stus.filter("name in ('jack','alice')").show()
stus.filter($"gender" === "M").show() // stus.where() //底层调用filter
//--------group by---------
stus.groupBy("gender").count().show()
stus.groupBy("gender").sum("age").show()
val map = Map(("age","sum"),("*","count"))
stus.groupBy("gender").agg(map).show() stus.groupBy("gender").agg(("age","sum"),("age","count")).show() println("--------神奇操作---------")
stus.groupBy("gender").count().show()
stus.groupBy("gender","age").count().show()
//pivot 透视 把未分组的列中的数据进行分组,并转置成列名,再对每个列名下的数据进行聚合
stus.groupBy("gender").pivot("age").count().show() //--------order by---------
stus.orderBy($"age" desc).show() //-------- join ---------
val scos = Seq(Score(1001,"语文",60.0),
Score(1004,"数学",90.0),
Score(1019,"物理",70.0),
Score(1099,"化学",80.0)).toDS()
stus.join(scos,stus("id") === scos("id"),"inner").show()
stus.join(scos,stus("id") === scos("id"),"left").show()
stus.join(scos,stus("id") === scos("id"),"right").show()
stus.join(scos,stus("id") === scos("id"),"full").show()
*/ val s = Seq("y", "e", "k")
val fun: String => Boolean = (name: String) => {
val last = name.substring(name.length-1)
s.contains(last)
}
spark.udf.register("lastIsX",fun) stus.createTempView("student") spark.sql("select * from student where lastIsX(name)").show() spark.close()
}

SparkSQL DSL 随便写写的更多相关文章

  1. 没有什么,开发ASP.NET时随便写写,想到什么写什么

    没有什么,开发ASP.NET时随便写写,想到什么写什么,这次想写点开发过程中,比如在数据库,某一张表中有一个字段,如下: 上面代码示例中高亮字段,数据类型为BIT,它存储的值将为"True& ...

  2. SparkSQL DSL开发(Old)

    import org.apache.spark.sql.SQLContextimport org.apache.spark.sql.expressions.Windowimport org.apach ...

  3. 【随便写写】印象笔记,WordPress,CSDN 等 写博客的不同

    之前有的文章,写在了印象笔记里面,有的文章,写在了自己的WordPress博客里面,但是,感觉还是需要在主流平台分享一下文章的.就再次写写文章吧.(PS:公众号最重要的不是写作,而是排版) 说说几个这 ...

  4. <随便写写>

    # Markdown用法 整理

  5. 随便写写,当作了解--Css

    Css,Cascading Style Sheets,层叠样式表.用于控制HTML页面样式.他的基本格式由两部分组成: 选择器 声明块 一.使用 css的注释用 /* 注释内容 */ 1.导入外部样式 ...

  6. python3第一天,随便写写

    哈哈 我滴第一篇博客,不知道咋写,随意看了看别人的博客,我还是不知道咋写,既然是我的博客,那我就把它当随笔写了(这里就是添加随笔...) 也不知道自己说了啥,不过想到了一句话:日记都是写给别人看的.哈 ...

  7. 随便写写,也有一些参考了我jio的很好的他人的成果

    Spring框架学习记录(1) 一. https://www.cnblogs.com/yuanqinnan/p/10274934.html (一)只要用框架开发java,一定躲不过spring,Spr ...

  8. c#随便写写 数据层和表现层,队列执行

    base.xxx() 调用父类的方法

  9. 被逼着写的jquery工作日管理日历插件

    因为工作原因,在我刚进入新公司之后,立马要求让我做一个jquery的插件demo.我的天,我面试的可是.net工程师啊.虽然以前接触过js,jquery,但也只是接触过一丢丢啊,没办法,只好硬着头皮上 ...

随机推荐

  1. Python编程导论第2版|百度网盘免费下载|新手学习

    点击下方即可免费下载 百度网盘免费下载:Python编程导论第2版 提取码:18g5 豆瓣评论: 介绍: 本书基于MIT 编程思维培训讲义写成,主要目标在于帮助读者掌握并熟练使用各种计算技术,具备用计 ...

  2. OFD呼之欲来、来之跚跚,谁之罪?

    软件国产化的浪潮势不可挡,美国逼得逾甚,我们压迫感逾强,唯有奋起直追方慰平生之志. 在板式文档领域,pdf已成为国际标准,亦可称为美国标准:它在该领域一枝独秀,已形成一览众山小之势! pdf出道20余 ...

  3. 使用brew services管理服务

    简介 官网: https://github.com/Homebrew/homebrew-services macOS使用launchctl命令加载开机自动运行的服务,brew service可以简化l ...

  4. C#中使用ajax请求

    ajax简介 Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式.快速动态网页应用的网页开发技术,无需重新加载 ...

  5. Redis之Redis入门介绍

    1.Redis概述    所谓Redis全称为REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value) ...

  6. AttributeError: module 'time' has no attribute 'clock'

    在python3.8中flask项目运行报错: AttributeError: module 'time' has no attribute 'clock'解决方案 主要原因是因为python3.8中 ...

  7. 1_Java语言概述

    学于尚硅谷开源课程 宋红康老师主讲 感恩 尚硅谷官网:http://www.atguigu.com 尚硅谷b站:https://space.bilibili.com/302417610?from=se ...

  8. Django坑_01

    写在前面的话,不是我不想用 Linux 去运行 Django Windows 的坑很多,可是 Linux 太慢了 以后遇到的坑,我都会发出来,供大家参考的. python manage.py runs ...

  9. 统计一个16位二进制数中1的个数,并将结果以十六进制形式显示在屏幕上,用COM格式实现。

    问题 统计一个16位二进制数中1的个数,并将结果以十六进制形式显示在屏幕上,用COM格式实现. 代码 code segment assume cs:code org 100h main proc ne ...

  10. PHP crypt() 函数

    定义和用法 crypt() 函数返回使用 DES.Blowfish 或 MD5 算法加密的字符串.高佣联盟 www.cgewang.com 在不同的操作系统上,该函数的行为不同,某些操作系统支持一种以 ...