Spark SQL 源码分析(二):SqlParser

SQL on Hadoop 按 SQL 解析可分为两大阵营: ANTLR Apache Calcite ANTLR 阵营的包括:Apache Hive、Apache Spark、Presto Apache Calcite 阵营的包括:Apache Flink、Apache Kylin SparkSession Spark 2. »

Spark SQL 源码分析(一):从 SQL 到 RDD

之前,曾经和同事讨论过一个问题:实现相同的逻辑,使用 RDD 一定比 SQL 执行速度更快么? 我的答案是:不一定。 至少在 Spark 2.0 之后,SQL 的执行速度是有可能比 RDD 更快的。 原因,是因为 SQL 最终生成的是经过优化的 RDD,如下图所示: 生成未解析的逻辑计划 »

学习 Spark 2(七):去重计数

去重计数(count distinct)通常用于计算集合中不重复元素的个数。例如:统计交易的商品数、网站的 UV 等。 HyperLogLog 一般情况下,去重计数的做法是维护元素集合 S,对于一个新的元素 e,如果 S 中包含元素 e 则加入集合 S,否则不加入,集合 S 的元素数量就是计数值。 然而, »

【译】深入理解 Spark SQL 的 Catalyst 优化器

原文:Deep Dive into Spark SQL’s Catalyst Optimizer Spark SQL 是 Spark 最新且技术最复杂的组件之一。它同时支持 SQL 查询和新的 DataFrame API。Spark SQL 的核心是 Catalyst 优化器,它以一种全新的方式利用高级语言的特性(例如: »

Spark 应用开发过程

第一步:数据探索 使用 spark-shell 或者笔记型应用(如:Apache Zeppelin)进行数据探索,编写核心的组件或算法代码。 第二步:编码 新建工程,将编写的核心组件或算法代码移到工程中。工程结构按以下三大模块进行组织: Source 数据输入 Process 数据处理 Sink 数据输出 第三步:测试用例 选择 JUnit/ScalaTest »