新的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
相关推荐
总之,编译Spark 1.6需要一定的技术背景和耐心,但通过这个过程,你可以更好地理解和掌控Spark的运行机制,并为自己的应用定制特定的特性。此外,如果你打算对Spark进行贡献,理解其源码和编译流程是非常必要的。
3. **DataFrame and Dataset**:在Spark 1.6版本引入,DataFrame提供了一种更高级的数据抽象,允许用户处理结构化数据。Dataset进一步将DataFrame与类型安全的编程模型结合,提供强类型和编译时检查,同时保持...
《Spark编程基础及项目实践》课程的课后习题涵盖了Spark的核心概念和关键特性,旨在帮助学生深入理解和应用Spark框架。以下是对习题内容的详细解释: 1. Spark的运行架构: - Driver Program:是应用程序的主要...
根据提供的文件信息,我们可以深入探讨Spark 1.6.1版本的相关知识点,包括其与Hadoop 2.6的集成方式、主要特性以及如何下载安装等。 ### Spark 1.6.1概述 Apache Spark是一款开源的大数据处理框架,旨在通过内存...
在文档中提到的另一个关键概念是Datasets,它是Spark 1.6中引入的一个新概念。Datasets提供了类型安全的编程接口,它能够允许开发者通过编码来处理复杂的数据处理任务。Datasets同时拥有DataFrame的优化执行引擎和...
DataFrame是Spark 1.6引入的新概念,是Spark SQL的基础,它是一个抽象的、列式的数据集合,可以视为结构化的RDD。DataFrame支持多种数据源,如HDFS、Cassandra等。Dataset是DataFrame的类型安全版本,提供更丰富的...
Dataset是另一个分布式数据集合概念,它在Spark 1.6版本中被引入,并在Spark 2.0之后与DataFrame的API融合。Dataset结合了RDD的类型安全特性以及DataFrame的易用性,同时支持强类型和Lambda函数,但仅限于Scala和...
Spark是Apache软件基金会下的一个开源大数据处理框架,其核心特性在于快速、通用和可扩展性。Spark 1.6.1是该框架的一个稳定版本,它在1.6系列中包含了多个性能优化和功能增强。这个"spark_api_1.6.1"压缩包很可能是...
这种方式对于初学者来说非常友好,便于理解和调试Spark的内部实现机制。此外,对于那些希望深入了解Spark内部工作原理的研究人员来说,这也是一个很好的起点。通过这种方式,不仅可以学习Spark的基本使用方法,还...
同时,Spark的DStream(Discretized Streams)特性可用于实时处理接收到的新诗词,保证游戏的实时性和互动性。 此外,Spark的并行计算能力在这个项目中也发挥了关键作用。通过将诗词库分布式存储,多个节点可以并行...
Spark Workshop是一个专注于Apache Spark技术的学习平台,它提供了丰富的实验代码和数据集,帮助用户深入理解Spark的核心特性和在大数据处理中的应用。Apache Spark是一个开源的分布式计算系统,以其高效、易用和对...
DataSet是Spark 1.6引入的新特性,是对DataFrame的进一步扩展。它提供了类型安全的API,允许使用强大的lambda函数,并且具备DataFrame的查询优化。DataSet是通过样例类来定义其结构的,每个样例类的属性对应于...
《Spark 结构化API预览:深入理解DataFrame、Dataset与SQL》 Spark的结构化API是其强大功能的核心组成部分,主要包括Datasets、DataFrames以及SQL表格和视图。这些API设计用于处理各种数据类型,从非结构化的日志到...
2. Dataset:在 Spark 1.6 版本中引入的 Dataset 是一个分布式的数据集合,它结合了 RDD 的性能优势和 Spark SQL 执行引擎的优化。Dataset 在 Scala 和 Java 中可用,但在 Python 中不直接支持,但得益于 Python 的...
- **HDFS架构**:理解HDFS的架构组成,包括NameNode和DataNode的角色及职责。 - **数据写入流程**:详细解释客户端向HDFS写入数据的具体步骤,包括数据块的创建、复制以及存储位置的选择等。 - **数据读取流程**:...
Spark的核心特性在于其内存计算,使得数据处理速度显著快于传统的Hadoop MapReduce模型。 1. **Spark基本概念**: - **Spark架构**:Spark基于弹性分布式数据集(Resilient Distributed Datasets, RDD)构建,提供...
- DataFrame API:在Spark 1.6之后引入,提供了SQL-like查询功能,简化了数据处理。 - Dataset API:是DataFrame的强类型版本,结合了RDD的性能和DataFrame的易用性。 6. **Spark编程模型**: - DAG(Directed ...
总结而言,《藏经阁——深入理解DataFrame与Dataset》的主题旨在揭示Spark 2.x版本中DataFrame和Dataset的性能优化,以及它们在大数据处理中的优势。通过理解这些概念和优化,开发者能够更好地利用Spark框架,提高...
数据是大数据分析的基础,理解数据集的特性是解决问题的关键。这部分应涵盖数据集的来源、大小、结构(结构化、半结构化或非结构化)、数据类型、时间范围以及数据质量等方面。此外,还需讨论数据预处理步骤,如清洗...
Spark1.6版本依赖Scala2.10,而从Spark2.0开始,它升级到了Scala2.11版本。因此,学习Scala对于理解和开发Spark应用至关重要。Scala官网列出了其六个主要特征: 1. **Java和Scala的互操作性**:Scala可以与Java代码...