新的Spark1.6版本发布了,之前使用Spark1.4版本的SparkSQL,这次发布后主要关注了1.6版本的SparkSQL特性
参阅了官方的Release Note和jira issue detail以及之前在使用1.4.0中的经验,
跟大家分享一下Spark1.6部分新加的几个特性。
1. Dataset API
目前Spark有两大类API:RDD API(Spark Core),DataFrame API(Spark SQL)
RDD API非常灵活,但是某些情况下执行计划很难被优化。
DataFrame API便于优化,但是操作UDF(Uer Define Function)就比较麻烦(之前在使用时发现想通过DataFrame API去描述SQL语句的业务时,确实有些复杂)。
Dataset API诞生在这样的背景下,需要兼顾以上两者的优点,既能使用户能够简洁清晰的描述UDF,又能够便于底层catalyst对执行计划的优化,
顺便提一下,SPARK-9999的jira case上对Dataset API的目标版本是2.0.0,估计那个时候Dataset API会更加的丰富
2. Session Management
集群可以被共享给多个拥有不同配置及临时表的用户,在1个SparkContext中可以有多个SparkSQL的session
之前在使用1.4的时候发现很多SQL下到底层最后都是顺序执行,而且SQL到SQLContext的调度是自己写线程池去处理的,
加入Session管理会给使用提供更大的方便,尤其在处理多并发时。
3. Per-operator Metrics for SQL Execution
Spark的metrics已经详细到task及stage上,在上面可以看到很多任务运行的指标,如任务耗时,处理的数据量,等等,
之前通过Metrics提供的信息发现了任务运行时间长的原因
新的特性是在SparkSQL运行时,为每个操作单位提供内存使用量和溢出 (这里应该是指在磁盘和内存上交换的)数据大小的统计显示,
这对于开发者了解资源,发现问题,做出调整很有帮助
4. SQL Queries on Files
SQL可以直接在符合数据规则的文件上进行查询,不再像以前需要先将文件注册成临时表
5. Reading non-standard JSON files
Spark在处理JSON时使用的Jackson包,这次将Jackson包的以下选项开放给使用者
ALLOW_COMMENTS
ALLOW_UNQUOTED_FIELD_NAMES
ALLOW_SINGLE_QUOTES
ALLOW_NUMERIC_LEADING_ZEROS
ALLOW_NON_NUMERIC_NUMBERS
除非特殊情况,个人还是更倾向于使用标准json
6. Advanced Layout of Cached Data
在对内存表进行扫描时,存储分区和排序方案,同时在DataFrame中添加了根据指定列进行分发和本地排序的API
7. All primitive in json can be infer to Strings
通过设置primitivesAsString为true,可以将JSON中的所有原语在Dataframe中指定为字符串类型,即JSON中的数据在Dataframe中统一为字符串
参考资料:
官方Release Note
http://spark.apache.org/releases/spark-release-1-6-0.html
相关推荐
基于Spark1.6,使用Spark SQL框架和sqlite数据库,把唐诗三百首,宋诗三百首和元明清诗精选导入数据库,可以按来源,体裁及作者,方便地查出诗句或试题中包含某个关键字的作品,还可以在选中作品后,进行五绝,七绝...
Spark2.3即将发布,会带来哪些新特性及性能提高,尽在databricks超级大牛李老板呕心历血近60页文档,首发!首发!首发!(版权属于DataBricks和smilegator)。
介绍spark2.3新特性:What's New in Apache Spark 2.3.
这一两年Spark技术很火,自己也凑一下热闹,主要是为了搭建Spark,但是Spark需要Hadoop的hdfs和yarn,所以需要先搭建Hadoop。本教程在Ubutnu 14.04 64位,Hadoop 2.6.0下验证通过,这里只列出命令与配置,不作详细...
大数据-Spark,-
linux中搭建spark环境使用的spark-1.6.0-bin-hadoop2.6.tgz安装包
NULL 博文链接:https://genius-bai.iteye.com/blog/2276551
详细描述了Spark1.6.0的安装过程和使用方法。严格按照教程安装基本上都能成功。与各位同仁共勉。
* 通过whole-stage code generation(全流程代码生成)技术将spark sql和dataset的性能提升2~10倍 * 通过vectorization(向量化)技术提升parquet文件的扫描吞吐量 * 提升orc文件的读写性能 * 提升catalyst查询优化...
深入理解Spark 核心思想与源码分析深入理解Spark 核心思想与源码分析深入理解Spark 核心思想与源码分析深入理解Spark 核心思想与源码分析深入理解Spark 核心思想与源码分析
│ 06-[理解]-Spark环境搭建-On-Yarn-两种模式.mp4 │ 07-[掌握]-Spark环境搭建-On-Yarn-两种模式演示.mp4 │ 09-[掌握]-Spark代码开发-准备工作.mp4 │ 10-[重点]-Spark代码开发-入门案例.mp4 ├─Spark-day02 ...
spark-1.6.3-bin-hadoop2.4-without-hive.tgz 经测试,hadoop 2.8.2下可用。hive2.1.1 可用
spark1.6.0源码 , spark1.6.0-src, 需要下载后自行编译
官网下载,windows可用, 有001 002 两个部分 ...Welcome to ____ __ / __/__ ___ _____/ /__ _\ \/ _ \/ _ `/ __/ '_/ /___/ .__/\_,_/_/ /_/\_\ version 1.6.0 /_/ Using Scala version 2.10.5 (Java HotSpot(TM...
spark.shuffle.blockTransferService netty shuffle过程中,传输数据的方式,两种选项,netty或nio,spark 1.2开始,默认就是netty,比较简单而且性能较高,spark 1.5开始nio就是过期的了,而且spark 1.6中会去除掉 ...
深入理解Spark:核心思想及源码分析.pdf 深入理解Spark:核心思想及源码分析.pdf
官网下载,windows可用, 有001 002 两个部分 ... Welcome to ____ __ / __/__ ___ _____/ /__ _\ \/ _ \/ _ `/ __/ '_/ /___/ .__/\_,_/_/ /_/\_\ version 1.6.0 /_/ ...Using Scala version 2.10.5 (Java HotSpot(TM...
1.Spark及其生态圈简介.pdf ...8.SparkMLlib(上)--机器学习及SparkMLlib简介.pdf 8.SparkMLlib(下)--SparkMLlib实战.pdf 9.SparkGraphX介绍及实例.pdf 10.分布式内存文件系统Tachyon介绍及安装部署.pdf
1.Spark及其生态圈简介.pdf ...8.SparkMLlib(上)--机器学习及SparkMLlib简介.pdf 8.SparkMLlib(下)--SparkMLlib实战.pdf 9.SparkGraphX介绍及实例.pdf 10.分布式内存文件系统Tachyon介绍及安装部署.pdf
dr-elephant spark 1.6.0 hadoop 2.4.1 编译好的 dr elephant文件 需要part2 中的jar包放入 part1 lib目录下