object BasicSQLTest {
def main(args: Array[String]): Unit = {
val spark = SparkSession
.builder()
.appName("BasicSQLTest")
.getOrCreate() val sessionDf = spark.read.parquet(s"${BASE_PATH}/trackerSession")
sessionDf.printSchema()
sessionDf.createOrReplaceTempView("trackerSession") //查询所有记录
val sessionRecords = spark.sql("select * from trackerSession")
sessionRecords.show() //过滤
val filterSession =
spark.sql("select distinct(cookie) from trackerSession where cookie_label = '固执'")
filterSession.show() //先join, 然后再分组SQL
val logDf = spark.read.parquet(s"${BASE_PATH}/trackerLog")
logDf.printSchema()
logDf.createOrReplaceTempView("trackerLog") val sql =
"""select tl.url, count(*) from trackerLog tl join trackerSession ts on tl.cookie = ts.cookie
| where ts.cookie_label = '固执' and tl.log_type='pageview'
| group by tl.url
| order by tl.url desc
""".stripMargin spark.sql(sql).show(false) //函数(内置函数)
//单行函数
spark.sql("select session_server_time, " +
"hour(session_server_time) as hour from trackerSession").show(false)
spark.sql("select click_count, cookie_label, " +
"concat(click_count, cookie_label) as c from trackerSession").show()
//多行函数(聚合函数)
val ccmDF = spark.sql("select max(click_count) as ccm from trackerSession")
ccmDF.printSchema()
ccmDF.show() //udf
spark.udf.register("myUDF", (arg1: Int, arg2: String) => {
if (arg1 > 1 && arg2.equals("固执")) {
arg2 + arg1
} else {
arg2 + "less"
}
})
spark.sql("select click_count, cookie_label, myUDF(click_count, cookie_label) " +
"as c from trackerSession").show() spark.stop()
}
}

  

SQL操作Spark SQL--BasicSQLTestt的更多相关文章

  1. SQL操作Spark SQL--CatalogApiTest

    object CatalogApiTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builder() ...

  2. Spark SQL 之 Data Sources

    #Spark SQL 之 Data Sources 转载请注明出处:http://www.cnblogs.com/BYRans/ 数据源(Data Source) Spark SQL的DataFram ...

  3. 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL

    周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...

  4. Spark 官方文档(5)——Spark SQL,DataFrames和Datasets 指南

    Spark版本:1.6.2 概览 Spark SQL用于处理结构化数据,与Spark RDD API不同,它提供更多关于数据结构信息和计算任务运行信息的接口,Spark SQL内部使用这些额外的信息完 ...

  5. Spark SQL 官方文档-中文翻译

    Spark SQL 官方文档-中文翻译 Spark版本:Spark 1.5.2 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述(Overview) 2 Data ...

  6. Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets Guide | ApacheCN

    Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession ...

  7. Spark官方1 ---------Spark SQL和DataFrame指南(1.5.0)

    概述 Spark SQL是用于结构化数据处理的Spark模块.它提供了一个称为DataFrames的编程抽象,也可以作为分布式SQL查询引擎. Spark SQL也可用于从现有的Hive安装中读取数据 ...

  8. Spark SQL数据源

    [TOC] 背景 Spark SQL是Spark的一个模块,用于结构化数据的处理. ++++++++++++++ +++++++++++++++++++++ | SQL | | Dataset API ...

  9. Spark SQL官方文档阅读--待完善

    1,DataFrame是一个将数据格式化为列形式的分布式容器,类似于一个关系型数据库表. 编程入口:SQLContext 2,SQLContext由SparkContext对象创建 也可创建一个功能更 ...

随机推荐

  1. phpstorm打开报错方法

    phpstorm打开报错方法 直接删掉默认文件夹里的idea文件夹 重新打开就可以了

  2. GPU机器安装paddle

    安装基础包 yum -y install epel-release yum -y install kernel-devel yum -y install dkms 编辑文件 /etc/default/ ...

  3. .whl文件安装cuda10.0版本的pytorch1.3.0+torchvision0.4.1

    $ python3 -m venv env3$ source env3/bin/activate$ cd env3/share/python-wheels 在此找到对应的版本:https://down ...

  4. js中Function引用类型中一些常见且有用的方法和属性

    Function类型 函数由于是Function类型的一个实例,所以函数名就是一个指向函数对象的指针,不会与某个函数死死的连接在一起,这也导致了js中没有真正的重载,但好处是,函数对象可以作为另一个函 ...

  5. checkbox之全选和反选

    先导入jquery组件 <input type="checkbox" id="checkall">全选<input type="ch ...

  6. select中的option被选中时页面的跳转

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. System.InvalidOperationException:“寄宿 HWND 必须是子窗口。”

    原文:System.InvalidOperationException:"寄宿 HWND 必须是子窗口." 当试图在 WPF 窗口中嵌套显示 Win32 子窗口的时候,你有可能出现 ...

  8. 使用NPOI进行Excel操作

    一.NPOI组件导入 右键项目菜单,“管理NuGet程序包” 直接搜索“NPOI”即会出现列表,下载第一个进行安装即可 安装完成后项目引用会出现以下几项 二.基础使用 添加引用 using NPOI. ...

  9. Angular复习笔记5-指令

    Angular复习笔记5-指令 在Angular中,指令是一个重要的概念,它作用在特定的DOM元素上,可以扩展这个元素的功能,为元素增加新的行为.本质上,组件可以被理解为一种带有视图的指令.组件继承自 ...

  10. Linux系统新手入门学习的四点建议

    随着计算机的普及.互联网的发展,原本黑客手中的攻城利器---Linux,渐渐进入到普通群众的视线里,让越来越多的人接触到Linux,并学习Linux进而投身到Linux运维工作中去.如果大家对Linu ...