Spark记录-SparkSQL一些操作
scala>val spark=new org.apache.spark.sql.SQLContext(sc)
user.json
{"age":"45","gender":"M","occupation":"7","userID":"4","zipcode":"02460"}{"age":"1","gend er":"F","occupation":"10","userID":"1","zipcode":"48067"}
$hadoop dfs -put user.json /user
scala>val userDF=spark.read.json("/user/user.json")
scala>userDF.show(2) #查看数据
scala> userDF.limit(2).toJSON.foreach(x =>println(x))
scala> userDF.printSchema
scala>userDF.select("userID","age").show #查询数据
scala>userDF.select(max("age"),min("age"),avg("age")).show
scala>userDF.select("userID", "age").filter("age > 30").show(2)
scala>userDF.filter("age > 30").select("userID", "age").show(2) #过滤数据
scala> userDF.groupBy("age").count().show()
scala> userDF.groupBy("age").agg(count("gender")).show()
scala> userDF.groupBy("age").agg(countDistinct("gender")).show()
scala> userDF.groupBy("age").agg("gender"->"count","occupation"->"count").show()
第一步:得到DataFrame或Dataset val ds = ...
第二步:注册成临时表 ds.registerTempTable("xxx")
第三步:用SQL计算 spark.sql ("SELECT ...")
def agg(aggExpr: (String, String), aggExprs: (String, String)*): DataFrame = {
groupBy().agg(aggExpr, aggExprs : _*) }
还有max、mean、min、sum、avg、explode、size、sort_array、day、to_date、abs、acros、asin、atan
总体上而言内置函数包含了五大基本类型:
1、聚合函数,例如countDistinct、sumDistinct等;
2、集合函数,例如sort_array、explode等
3、日期、时间函数,例如hour、quarter、next_day
4、数学函数,例如asin、atan、sqrt、tan、round等;
5、开窗函数,例如rowNumber等
6、字符串函数,concat、format_number、rexexp_extract
7、其它函数,isNaN、sha、randn、callUDF
Spark SQL支持的Hive特性
Spark SQL支持多部分的Hive特性,例如:
- Hive查询语句,包括:
- SELECT
- GROUP BY
- ORDER BY
- CLUSTER BY
- SORT BY
- 所有Hive运算符,包括
- 比较操作符(=, ⇔, ==, <>, <, >, >=, <=, etc)
- 算术运算符(+, -, *, /, %, etc)
- 逻辑运算符(AND, &&, OR, ||, etc)
- 复杂类型构造器
- 数学函数(sign,ln,cos,etc)
- 字符串函数(instr,length,printf,etc)
- 用户自定义函数(UDF)
- 用户自定义聚合函数(UDAF)
- 用户自定义序列化格式器(SerDes)
- 窗口函数
- Joins
- JOIN
- {LEFT|RIGHT|FULL} OUTER JOIN
- LEFT SEMI JOIN
- CROSS JOIN
- Unions
- 子查询
- SELECT col FROM ( SELECT a + b AS col from t1) t2
- Sampling
- Explain
- 表分区,包括动态分区插入
- 视图
- 所有的Hive DDL函数,包括:
- CREATE TABLE
- CREATE TABLE AS SELECT
- ALTER TABLE
- 大部分的Hive数据类型,包括:
- TINYINT
- SMALLINT
- INT
- BIGINT
- BOOLEAN
- FLOAT
- DOUBLE
- STRING
- BINARY
- TIMESTAMP
- DATE
- ARRAY<>
- MAP<>
- STRUCT<>
6.1.3 不支持的Hive功能
下面是当前不支持的Hive特性,其中大部分特性在实际的Hive使用中很少用到。
Major Hive Features
- Tables with buckets:bucket是在一个Hive表分区内进行hash分区。Spark SQL当前不支持。
Esoteric Hive Features
- UNION type
- Unique join
- Column statistics collecting:当期Spark SQL不智齿列信息统计,只支持填充Hive Metastore的sizeInBytes列。
Hive Input/Output Formats
- File format for CLI: 这个功能用于在CLI显示返回结果,Spark SQL只支持TextOutputFormat
- Hadoop archive
Spark记录-SparkSQL一些操作的更多相关文章
- Spark记录-SparkSQL远程操作MySQL和ORACLE
1.项目引入mysql和oracle驱动 2.将mysql和oracle驱动上传到hdfs 3.远程调试源代码如下: import org.apache.spark.sql.SQLContext im ...
- Spark记录-SparkSQL相关学习
$spark-sql --help 查看帮助命令 $设置任务个数,在这里修改为20个 spark-sql>SET spark.sql.shuffle.partitions=20; $选择数据 ...
- Spark记录-SparkSql官方文档中文翻译(部分转载)
1 概述(Overview) Spark SQL是Spark的一个组件,用于结构化数据的计算.Spark SQL提供了一个称为DataFrames的编程抽象,DataFrames可以充当分布式SQL查 ...
- Spark记录-Spark-Shell客户端操作读取Hive数据
1.拷贝hive-site.xml到spark/conf下,拷贝mysql-connector-java-xxx-bin.jar到hive/lib下 2.开启hive元数据服务:hive --ser ...
- Spark记录-SparkSQL
Spark SQL的一个用途是执行SQL查询.Spark SQL也可以用来从现有的Hive安装中读取数据.有关如何配置此功能的更多信息,请参阅Hive表部分.从另一种编程语言中运行SQL时,结果将作为 ...
- hive on spark VS SparkSQL VS hive on tez
http://blog.csdn.net/wtq1993/article/details/52435563 http://blog.csdn.net/yeruby/article/details/51 ...
- Spark Streaming通过JDBC操作数据库
本文记录了学习使用Spark Streaming通过JDBC操作数据库的过程,源数据从Kafka中读取. Kafka从0.10版本提供了一种新的消费者API,和0.8不同,因此Spark Stream ...
- Spark记录-spark介绍
Apache Spark是一个集群计算设计的快速计算.它是建立在Hadoop MapReduce之上,它扩展了 MapReduce 模式,有效地使用更多类型的计算,其中包括交互式查询和流处理.这是一个 ...
- Spark之 SparkSql、DataFrame、DataSet介绍
SparkSql SparkSql是专门为spark设计的一个大数据仓库工具,就好比hive是专门为hadoop设计的一个大数据仓库工具一样. 特性: .易整合 可以将sql查询与spark应用程序进 ...
随机推荐
- Java面向对象(Eclipse高级、类与接口作为参数返回值)
面向对象 今日内容介绍 u Eclipse常用快捷键操作 u Eclipse文档注释导出帮助文档 u Eclipse项目的jar包导出与使用jar包 u 不同修饰符混合使用细节 u 辨析何时定义变 ...
- jQuery(六)
$下常用方法 $().xxx:只能给jq对象用 $.xxx不仅可以给jq用也可以给原生js用,叫做工具方法 $.type() <script> $(function(){ var a= n ...
- PAT 甲级 1045 Favorite Color Stripe
https://pintia.cn/problem-sets/994805342720868352/problems/994805437411475456 Eva is trying to make ...
- laravel 数据库获取值的常用方法
---恢复内容开始--- find($id) 需要一个主键$id并返回一个模型对象,若不存在则返回null findOrFail($id) 需要一个主键$id并返回一个模型对象,若不存在则发生错误,抛 ...
- nginx gzip 以及 tcp 反向代理的 model
同事为了提高性能发给我一model 简单改了一下. 记录一下 #user nobody; worker_processes ; events { worker_connections ; } http ...
- [转帖]浅析java程序的执行过程
浅析java程序的执行过程 转帖来源: https://www.cnblogs.com/wangjiming/p/10315983.html 之前学习过 这一块东西 但是感觉理解的不深刻. copy一 ...
- C-Lodop的https扩展版,火狐下添加例外
LODOP综合版里的c-lodop是标准版,没有https和广域网打印功能,如果使用了标准版,调试JS的时候会提示,,loaded over HTTPS,,,the content must be s ...
- BZOJ4785 ZJOI2017树状数组(概率+二维线段树)
可以发现这个写挂的树状数组求的是后缀和.find(r)-find(l-1)在模2意义下实际上查询的是l-1~r-1的和,而本来要查询的是l~r的和.也就是说,若结果正确,则a[l-1]=a[r](mo ...
- HDU - 1260 (Tickets)
题意: 买票 一个人要么自己买 要么和前面的人一起买 这两种情况分别有一个买票所花费的时间 求总的花费时间最小 解析: dp[i] 表示前i个人买票总的花费时间 v[i]表示第i个人买 ...
- Codeforces Round #412 C. Success Rate
C. Success Rate time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...