内容简介:开源 Apache Software Foundation 的 Spark 社区最近发布了 Apache Spark v2.4.0。这是基于其 2.x 代码流的第五个主要版本。这一版中包含了全球近 200 位贡献者提供的约 1135 个 JIRA(新特性和错误修复)。与 2.x 代码流之前的版本相比,v2.4.0 中各种 JIRA 活动的规模表明 Spark 2.x 代码流正日趋成熟和稳定。自 IBM 积极参与该项目一直到最新的 v2.4.0 版,我们做出了巨大的贡献,在超过 1300 次提交中为 Spar
开源 Apache Software Foundation 的 Spark 社区最近发布了 Apache Spark v2.4.0。这是基于其 2.x 代码流的第五个主要版本。这一版中包含了全球近 200 位贡献者提供的约 1135 个 JIRA(新特性和错误修复)。与 2.x 代码流之前的版本相比,v2.4.0 中各种 JIRA 活动的规模表明 Spark 2.x 代码流正日趋成熟和稳定。自 IBM 积极参与该项目一直到最新的 v2.4.0 版,我们做出了巨大的贡献,在超过 1300 次提交中为 Spark Core、 SQL 、MLlib、Streaming、PySpark 和 SparkR 领域贡献了 69,000 多行新代码。随着机器学习和人工智能加速发展,IBM 的 Spark 技术中心还将其使命延伸到深度学习和 AI,并重新启动了 开源、数据和 AI 技术中心 (CODAIT)。尽管我们在向深度学习转移,但 CODAIT 仍致力于同众多开发者和提交者一起改进 Spark 核心技术,开展开发者宣传工作,继续加速实现 Spark 的业务价值,推动企业将智能应用到业务中。在 Spark v2.4.0 中,IBM 持续提交了约 100 次,包含近 6000 行的新代码。您可在 CODAIT Spark JIRA 仪表板 上找到我们最新贡献的数据。
版本说明 中显示,Apache Spark v2.4.0 版主要通过添加重要的特性来改善实用性、稳定性和性能,比如添加 Barrier Execution Mode,从而与深度学习框架更紧密地集成;添加 30 多个内置高阶函数来处理复杂的数据类型;以及改进 Kubernetes 集成和 ORC 文件读取。其他重要更新包括内置了 Avro 数据源、图像数据源、灵活的流接收器;去除了传输期间的 2-GB 数据块大小限制;以及改进了 Pandas UDF。在版本说明里强调的众多特性中,有些是 IBM Spark 团队提供的。下面简单介绍一下这些特性。
支持 EXCEPT ALL/INTERSECT ALL ( SPARK-21274 )
在 SQL 中,集合运算可将多次查询的结果组合到单一结果集中。集合运算符包括 `UNION`、`INTERSECT` 和 `EXCEPT`。`ALL` 关键字与集合运算符结合使用时,可确保在结果集中保留重复的键。在 Spark 2.4 中,我们添加了对 `EXCEPT ALL` 和 `INTERSECT ALL` 的支持,旨在使 Spark Engine 符合 SQL 标准。例如,以下 `EXCEPT ALL` 查询会返回结果集 (NULL, 1, 1, 4)。
SELECT a FROM VALUES (1), (1), (1), (null), (null), (4) AS t1(a) EXCEPT ALL SELECT b FROM VALUES (1), (null), (3) AS t2(b)
以下 `INTERSECT ALL` 查询会返回结果集 (NULL, 1, 1)。
SELECT a FROM VALUES (1), (1), (1), (null), (null), (4) AS t1(a) INTERSECT ALL SELECT b FROM VALUES (1), (1), (null), (3) AS t2(b)
这是对 SQL 函数的一般性增强,所以普通 Spark 用户都会受益。更具体地来讲,IBM SQL Service 的客户可充分利用集合运算符的这种增强功能。
添加一个新选项,指定查询应从 JDBC 读取数据 ( SPARK-24423 )
Spark 提供了多个 API 来对 JDBC 数据源进行读取和写入操作。使用读取 API 读取 JDBC 表时,可以指定各种 JDBC 选项对通过网络传输的数据加以限制。Spark 2.4.0 引入了一个额外的 JDBC 选项 `query`,用于指定一个数据库表的表达式,以标识源表。像用户提供的谓词等其他数据限制选项一样,也可使用此选项限制在基础 JDBC 源与 Spark 之间交换的数据。例如:
val first_ten_rows_query = "select * from tableName limit 10" val jdbcDf = spark.read .format("jdbc") .option("query", first_ten_rows_query) .load()
为集合运算实现优先级规则 ( SPARK-24966 )
在 Spark 2.4 之前,多个集合运算符串连在一起时,Spark 会为所有运算符赋予相同的优先级,按照这些运算符在查询中出现的顺序从左向右执行它们。此行为不符合 SQL 标准的要求,与 `UNION` 和 `EXCEPT` 运算符相比,该标准为 `INTERSECT` 运算符赋予了更高的优先级。这种不一致在 Spark 2.4.0 中得到解决。
支持解析具有完全限定列名称的列 ( SPARK-19602 )
此特性现在支持
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 新华三致力于推动产业向智能+演进
- Mapbox致力于开发基于位置的AR地图
- Mapbox致力于开发基于位置的AR地图
- 芯盾时代:致力于身份认证安全的领军者
- Khronos继续致力于更好的OpenCL + LLVM集成
- Linux 基金会即将开源 Akraino 项目,致力于边缘计算
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。