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. pvs显示unknown device

    一 .不要unknown的那块pv盘的解决办法 [root@gezi ~]# pvs WARNING: Device for PV D1LLfT-3Hle-NbrP-5165-Q6WR-2UWF-2x ...

  2. 【手写代码】计算1-n中总共有多少二进制1

    #include<bits/stdc++.h> #include<vector> using namespace std; //时间复杂度:O(N) int f(int x) ...

  3. [SOJ #498]隔膜(2019-10-30考试)/[POJ2152]Fire

    题目大意:有一棵$n$个点的带边权树,第$i$个点有两个值$w_i,d_i$,表示在这个点做标记的代价为$w_i$,且这个点距离$d_i$以内至少要有一个点被标记,为最小代价.$n\leqslant6 ...

  4. Android 系统架构 和 各个版本代号介绍

    一.Android 系统架构: 1. linux内核层Android 基于Linux内核,为Android设备的各种硬件提供底层驱动 比如: 显示驱动.音频.照相机.蓝牙.Wi-Fi驱动,电源管理等 ...

  5. C# 获取某个时间的0点0分和23点59分59秒

    C#获取当月第一天和最后一天 当月第一天0时0分0秒: DateTime.Now.AddDays( - DateTime.Now.Day).Date 当月最后一天23时59分59秒: DateTime ...

  6. kubernetes使用securityContext和sysctl

    前言 在运行一个容器时,有时候需要使用sysctl修改内核参数,比如net..vm..kernel等,sysctl需要容器拥有超级权限,容器启动时加上--privileged参数即可.那么,在kube ...

  7. K8S使用问题汇总

    1,报错如下 Warning: kubectl apply should be used on resource created by either kubectl create --save-con ...

  8. 30个关于Shell脚本的经典案例(中)

    本文目录 11.iptables自动屏蔽访问网站频繁的IP 12.判断用户输入的是否为IP地址 13.判断用户输入的是否为数字 14.给定目录找出包含关键字的文件 15.监控目录,将新创建的文件名追加 ...

  9. 【开发工具】- Java开发必知工具

    压力测试工具_JMeter 作用 1.能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过JDBC). 2.完全的可移植性和100% 纯java. 3.完全 Swi ...

  10. java基本结构

    前言 Java文件的运行过程: 1,javac.exe:编译器 2,java.exe:解释器 微软shell下运行实例: C:\Users\Administrator>cd D:\文档\JAVA ...