@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. 在java中进行日期时间比较的4种方法

    1. Date.compareTo() java.util.Date提供了在Java中比较两个日期的经典方法compareTo(). 如果两个日期相等,则返回值为0. 如果Date在date参数之后, ...

  2. python unicode和string byte

    python unicode 和string那 开发过程中总是会碰到string, unicode, ASCII, 中文字符等编码的问题, 每次碰到都要现搜, 很是浪费时间, 于是这次狠下心, 一定要 ...

  3. 解决SyntaxError: Non-UTF-8 code starting with '\xbb'问题

    在第一行加入 # coding=utf-8 2020-06-13

  4. PHP lcfirst() 函数

    实例 把 "Hello" 的首字符转换为小写.: <?php高佣联盟 www.cgewang.comecho lcfirst("Hello world!" ...

  5. 5.15 牛客挑战赛40 E 小V和gcd树 树链剖分 主席树 树状数组 根号分治

    LINK:小V和gcd树 时限是8s 所以当时好多nq的暴力都能跑过. 考虑每次询问暴力 跳父亲 这样是nq的 4e8左右 随便过. 不过每次跳到某个点的时候需要得到边权 如果直接暴力gcd的话 nq ...

  6. 解析Class文件

    类文件解析的入口是ClassFileParser类中定义的parseClassFile()方法.上一小节得到了文件字节流stream后,接着会在ClassLoader::load_classfile( ...

  7. MySQL Notifier 缺少根元素解决方法

    删除C:\Users(电脑用户名)\AppData\Roaming\Oracle\MySQL Notifier\settings.config文件即可

  8. 解决使用rollup构建ECharts过程中遇到的问题

    1.ECharts官方文档 参考:自定义构建 ECharts - ECharts Documentation 2.解决问题 改动一: // line.js // 引入 echarts 主模块. // ...

  9. Go语言入门系列(五)之指针和结构体的使用

    Go语言入门系列前面的文章: Go语言入门系列(二)之基础语法总结 Go语言入门系列(三)之数组和切片 Go语言入门系列(四)之map的使用 1. 指针 如果你使用过C或C++,那你肯定对指针这个概念 ...

  10. 一篇夯实一个知识点系列--python实现十大排序算法

    写在前面 排序是查找是算法中最重要的两个概念,我们大多数情况下都在进行查找和排序.科学家们穷尽努力,想使得排序和查找能够更加快速.本篇文章用Python实现十大排序算法. 干货儿 排序算法从不同维度可 ...