Spark 3.3.0 版本发布

Apache Spark 3.3.0 是 3.x 系列的第四个版本。 在开源社区的巨大贡献下,此版本成功解决了超过 1,600 个 Jira 工单。

此版本通过 Bloom 过滤器提高了 Join 查询性能,通过支持流行的 Pandas 功能(如 datetime.timedelta 和 merge_asof)增加了 Pandas API 的覆盖范围,通过改进 ANSI 合规性并支持数十个新的内置函数来简化从传统数据仓库的迁移,并通过更好的错误处理、自动完成、性能和分析来提高开发效率。

要下载 Apache Spark 3.3.0,请访问下载页面。 您可以查阅 JIRA 以了解详细更改。 我们在此处整理了一份高级更改列表,按主要模块分组。

亮点

Spark SQL 和 Core

ANSI 模式

  • ANSI 模式下的新显式转换语法规则 (SPARK-33354)
  • 如果在 ANSI 模式下索引为 null,则 Elt() 应返回 null (SPARK-38304)
  • 如果数组/映射中不存在元素,则可以选择返回 null 结果 (SPARK-37750)
  • 允许在数字类型和时间戳类型之间进行转换 (SPARK-37714)
  • 默认禁用 ANSI 保留关键字 (SPARK-37724)
  • 使用存储分配规则来解析函数调用 (SPARK-37438)
  • 添加一个配置以允许在 Datetime 和 Numeric 之间进行转换 (SPARK-37179)
  • 添加一个配置以选择性地强制执行 ANSI 保留关键字 (SPARK-37133)
  • 不允许 Interval 和字符串文字之间的二进制运算 (SPARK-36508)

特性增强

性能增强

  • 全阶段代码生成
    • 为没有分组键的排序聚合添加代码生成 (SPARK-37564)
    • 为完全外连接排序合并连接添加代码生成 (SPARK-35352)
    • 为完全外连接洗牌哈希连接添加代码生成 (SPARK-32567)
    • 为存在排序合并连接添加代码生成 (SPARK-37316)
  • 下推(过滤器)
    • 通过 RebalancePartitions 下推过滤器 (SPARK-37828)
    • 下推布尔列过滤器 (SPARK-36644)
    • 如果连接条件为空,则为左半连接/反连接的右侧下推 limit 1 (SPARK-37917)
    • 支持通过聚合/联合传播空关系 (SPARK-35442)
    • 行级运行时过滤 (SPARK-32268)
    • 支持行级别运行时过滤器中的左半连接 (SPARK-38565)
    • 支持对去重的 CTE 进行谓词下推和列剪裁 (SPARK-37670)
  • 向量化
    • 实现 ConstantColumnVector 并提高隐藏文件元数据的性能 (SPARK-37896)
    • 为 VectorizedPlainValuesReader.readBooleans 启用向量化读取 (SPARK-35867)
  • 组合/移除/替换节点
    • 如果它们之间存在项目,则组合联合 (SPARK-37915)
    • 如果我们能安全地向上转换两个转换,则组合为一个转换 (SPARK-37922)
    • 如果 Sort 是 RepartitionByExpression 的子节点,则移除 Sort (SPARK-36703)
    • 如果外连接在具有别名的流式处理端只有 DISTINCT,则移除外连接 (SPARK-37292)
    • 如果子节点已经排序,则用排序聚合替换哈希聚合 (SPARK-37455)
    • 如果子节点已经排序,则用排序聚合替换对象哈希聚合 (SPARK-37557)
    • 如果我们不重复昂贵的表达式,则仅折叠项目 (SPARK-36718)
    • 在 RewritePredicateSubquery 后移除冗余别名 (SPARK-36280)
    • 合并非相关的标量子查询 (SPARK-34079)
  • 分区
    • 如果存在静态分区剪裁,则不添加动态分区剪裁 (SPARK-38148)
    • 改进 Optimizer 规则中的 RebalancePartitions (SPARK-37904)
    • 为重新平衡分区添加小分区因子 (SPARK-37357)
  • 连接
    • 微调在 DynamicJoinSelection 中降级广播哈希连接的逻辑 (SPARK-37753)
    • 为 SEMI/ANTI 洗牌哈希连接构建关系时,忽略重复的连接键 (SPARK-36794)
    • 即使引入额外的洗牌,也支持优化倾斜连接 (SPARK-33832)
  • AQE
    • 支持在 AQE Optimizer 中消除限制 (SPARK-36424)
    • 优化普通和 AQE Optimizer 中的单行计划 (SPARK-38162)
  • Aggregate.groupOnly 支持可折叠表达式 (SPARK-38489)
  • ByteArrayMethods arrayEquals 应该快速跳过与非对齐平台对齐的检查 (SPARK-37796)
  • 将树模式剪裁添加到 CTESubstitution 规则 (SPARK-37379)
  • 添加更多 Not 运算符简化 (SPARK-36665)
  • 在 UnwrapCastInBinaryComparison 中支持 BooleanType (SPARK-36607)
  • Coalesce 丢弃第一个非空表达式之后的所有表达式 (SPARK-36359)
  • 添加一个逻辑计划访问器来传播不同的属性 (SPARK-36194)

内置连接器增强

  • 常规
    • 从数据源宽松序列化日期时间 (SPARK-38437)
    • 当表位置路径的第一个字母在创建/更改表中是斜杠时,将其视为绝对路径 (SPARK-38236)
    • 从空的静态数字类型分区中删除前导零 (SPARK-35561)
    • 支持数据源选项中的 ignoreCorruptFilesignoreMissingFiles (SPARK-38767)
  • Parquet
    • 启用按字段 ID 匹配模式列名 (SPARK-38094)
    • 在 parquet 中读取/写入数据时删除检查字段名称 (SPARK-27442)
    • 支持使用带有 Parquet DataPage V2 的 RLE 编码的向量化读取布尔值 (SPARK-37864)
    • 支持 Parquet V2 数据页编码 (DELTA_BINARY_PACKED) 用于向量化路径 (SPARK-36879)
    • 重新调整保存在 Parquet/Avro 元数据中的会话时区中的时间戳 (SPARK-37705)
    • 为聚合下推分组分区列 (SPARK-36646)
    • Parquet 的聚合(最小值/最大值/计数)下推 (SPARK-36645)
    • 如果使用 G1GC 和 ON_HEAP,则按 LONG_ARRAY_OFFSET 减小默认页面大小 (SPARK-37593)
    • 为 Parquet V2 支持实现向量化的 DELTA_BYTE_ARRAY 和 DELTA_LENGTH_BYTE_ARRAY 编码 (SPARK-37974)
    • 支持 Parquet 矢量化读取器的复杂类型 (SPARK-34863)
  • ORC
    • 在 ORC 中读取/写入现有数据时删除检查字段名称 (SPARK-37965)
    • ORC 的聚合下推 (SPARK-34960)
    • 支持从/向 ORC 数据源读取和写入 ANSI 间隔 (SPARK-36931)
    • 支持 ORC 数据源中仅包含数字的列名 (SPARK-36663)
  • JSON
    • 在 JSON 读取器中解析带引号的 NaN 和 Infinity 值时,遵守 allowNonNumericNumbers (SPARK-38060)
    • 默认情况下,在 CSV/JSON 中使用 CAST 处理日期时间 (SPARK-36536)
    • 对齐 Json 读取器中 MapType 中不支持的键类型的错误消息 (SPARK-35320)
    • 添加一个旧配置,用于在 DataFrame.schema.csv/json(ds) 中尊重可空性 (SPARK-35912)
  • CSV
    • 修复从 CSV 引用损坏记录列的问题 (SPARK-38534)
    • 默认情况下,空值应保存为空,而不是带引号的空字符串 “” (SPARK-37575)
    • 加快 JSON/CSV 数据源中默认格式的时间戳类型推断 (SPARK-39193)
  • JDBC
    • 支持 JDBC V2 的级联模式 (SPARK-37929)
    • 将 IMMEDIATE 语句添加到 DB2 方言截断实现中 (SPARK-30062)
    • 支持内置 JDBC 方言的聚合函数 (SPARK-37867)
    • 将 compileAggregates 从 JDBCRDD 移动到 JdbcDialect (SPARK-37286)
    • 在 JDBC (MySQL 方言) 中实现 dropIndex 和 listIndexes (SPARK-36914)
    • 支持 JDBC V2 MySQL 方言中的列表命名空间 (SPARK-38054)
    • 将工厂方法 getConnection 添加到 JDBCDialect 中 (SPARK-38361)
    • Jdbc 方言应决定可以下推哪些函数 (SPARK-39162)
    • 在 JDBC 连接器提供程序中传播正确的 JDBC 属性,并添加“connectionProvider”选项 (SPARK-36163)
    • 重构框架,以便 JDBC 方言可以自行编译过滤器 (SPARK-38432)
    • 重构框架,以便 JDBC 方言可以自行编译表达式 (SPARK-38196)
    • 在 DS V2 JDBC (MySQL 方言) 中实现 createIndex 和 IndexExists (SPARK-36913)
  • Hive
    • 支持写入 Hive 分桶表(带有 Hive 哈希的 Parquet/ORC 格式)(SPARK-32709)
    • 支持写入 Hive 分桶表(带有 Hive 哈希的 Hive 文件格式)(SPARK-32712)
    • 在客户端使用表达式过滤 Hive 分区 (SPARK-35437)
    • 支持 HiveTableScanExec 的动态分区剪裁 (SPARK-36876)
    • 如果 InsertIntoHiveDir 可转换,则应使用数据源 (SPARK-38215)

数据源 V2 API

  • 新接口
    • 引入一个新的 DataSource V2 接口 HasPartitionKey (SPARK-37376)
    • 添加接口 SupportsPushDownV2Filters (SPARK-36760)
    • 支持 DataSource V2 CreateTempViewUsing (SPARK-35803)
    • 添加一个类来表示 DS V2 中的通用聚合函数 (SPARK-37789)
    • 一个在 DS V2 API 中表示 catalyst 表达式的新框架 (SPARK-37960)
    • 为基于组的行级别操作添加 API (SPARK-38625)
  • 迁移命令
    • 默认情况下,迁移 SHOW CREATE TABLE 以使用 V2 命令 (SPARK-37878)
    • 默认情况下,迁移 CREATE NAMESPACE 以使用 V2 命令 (SPARK-37636)
    • 默认情况下,迁移 DESCRIBE NAMESPACE 以使用 V2 命令 (SPARK-37150)
  • 索引
  • 下推 (SPARK-38788)
    • 添加 DS V2 过滤器 (SPARK-36556)
    • 为 Data Source V2 下推布尔列过滤器 (SPARK-36644)
    • 支持将 top N 下推到 JDBC 数据源 V2 (SPARK-37483)
    • DS V2 示例下推 (SPARK-37038)
    • DS V2 LIMIT 下推 (SPARK-37020)
    • DS V2 支持部分聚合下推 AVG (SPARK-37839)
    • 支持 datasource V2 完整聚合下推 (SPARK-37644)
    • 如果 Sum, Count, Any 伴随 distinct,则无法进行部分聚合下推 (SPARK-38560)
    • 转换更多标准聚合函数用于下推 (SPARK-37527)
    • DS V2 聚合下推支持带有别名的 project (SPARK-38533)
    • DS V2 topN 下推支持带有别名的 project (SPARK-38644)
    • DS V2 Top N 下推支持 order by 表达式 (SPARK-39037)
    • Datasource V2 支持部分 topN 下推 (SPARK-38391)
    • 支持将 Cast 下推到 JDBC 数据源 V2 (SPARK-38633)
    • 如果 complete limit 被下推到数据源,则从 plan 中移除 Limit (SPARK-38768)
    • DS V2 支持下推其他非聚合函数 (SPARK-38761)
    • DS V2 支持下推数学函数 (SPARK-38855)
    • DS V2 聚合下推支持 group by 表达式 (SPARK-38997)
    • DS V2 聚合部分下推应该支持没有聚合函数的 group by (SPARK-39135)
  • 支持数据源 V2 中 ORC 向量化读取器的嵌套列 (SPARK-36404)
  • 从 ds V2 自定义指标更新任务指标 (SPARK-37578)
  • 统一 SHOW CREATE TABLE 命令的 V1 和 V2 选项输出 (SPARK-37494)
  • 添加命令 SHOW CATALOGS (SPARK-35973)

Kubernetes 增强

  • Kubernetes 环境中的 Executor Rolling (SPARK-37810)
  • 支持自定义 Kubernetes 调度器 ( SPARK-36057)
  • executorIdleTimeout 不适用于 K8s 上 pending 的 pod (SPARK-37049)
  • 将 kubernetes-client 升级到 5.12.2 (SPARK-38817)
  • 使内存开销因子可配置 (SPARK-38194)
  • 为 Kubernetes 上的 Spark 添加 Volcano 内置集成和 PodGroup 模板支持(实验性)。 (SPARK-36061, SPARK-38455)
  • 添加 KubernetesCustom[Driver/Executor]FeatureConfigStep 开发者 API (SPARK-37145)

节点退役

  • FallbackStorage 不应尝试解析任意的“remote”主机名 (SPARK-38062)
  • ExecutorMonitor.onExecutorRemoved 应该将 ExecutorDecommission 处理为 finished (SPARK-38023)

基于推送的 Shuffle

  • 用于 push-based shuffle 的自适应 shuffle 合并最终化 (SPARK-33701)
  • 用于 Push based shuffle 的自适应 shuffle mergers 获取 (SPARK-34826)
  • 跳过来自 push-based shuffle 的合并块的诊断 (SPARK-37695)
  • PushBlockStreamCallback 应该首先检查 isTooLate 以避免 NPE (SPARK-37847)
  • RemoteBlockPushResolver 中的基于 Push 的合并最终化错误 (SPARK-37675)
  • 在重试期间,如果 shuffleMergeEnabled 对于 shuffleDependency 为 false,则避免获取合并状态 (SPARK-37023)

其他值得注意的更改

  • 向 BlockInfoManager 添加细粒度锁定 (SPARK-37356)
  • 支持将 Spark gpu/fpga 资源类型映射到自定义 YARN 资源类型 (SPARK-37208)
  • 如果 shuffle 块倾斜,则报告准确的 shuffle 块大小 (SPARK-36967)
  • 支持网络层的 Netty 日志记录 (SPARK-36719)

结构化流

主要特性

  • 引入 Trigger.AvailableNow,用于像 Trigger.Once 一样在多个批次中运行流式查询 (SPARK-36533)

其他值得注意的更改

  • 使用 StatefulOpClusteredDistribution 用于有状态的运算符,同时保持向后兼容性 (SPARK-38204)
  • 修复具有密钥数据的批处理中的 flatMapGroupsWithState 超时问题 (SPARK-38320)
  • 修复 RocksDB 状态存储提供程序上的流-流外连接的正确性问题 (SPARK-38684)
  • 将 Kafka 升级到 3.1.0 (SPARK-36837)
  • 支持 Kafka 数据源上的 Trigger.AvailableNow (SPARK-36649)
  • 优化 RocksDB 状态存储提供程序上的写入路径 (SPARK-37224)
  • 引入一种新的数据源,用于为每个 microbatch 提供一致的行集 (SPARK-37062)
  • 使用 HashClusteredDistribution 用于有状态的运算符,同时保持向后兼容性 (SPARK-38204)
  • 使 foreachBatch 流式查询正常停止 (SPARK-39218)

PySpark

Spark 上的 Pandas API

  • 重大改进
  • 主要特性
    • 实现 SparkSQL 原生 ps.merge_asof (SPARK-36813)
    • 支持 pandas API on Spark 中的 TimedeltaIndex (SPARK-37525)
    • 支持 Python 的 timedelta (SPARK-37275, SPARK-37510)
    • 在 CategoricalAccessor/CategoricalIndex 中实现函数 (SPARK-36185)
    • 在 pandas API on Spark 中,使用 Python 的标准字符串格式化程序用于 SQL API (SPARK-37436)
    • 支持 timedelta Series/Index 的基本操作 (SPARK-37510)
    • 支持 ps.MultiIndex.dtypes (SPARK-36930)
    • 实现 Index.map (SPARK-36469)
    • 实现 Series.xor 和 Series.rxor (SPARK-36653)
    • 实现整数 ps.Series/Index 的一元运算符 invert (SPARK-36003)
    • 实现 DataFrame.cov (SPARK-36396)
    • 支持 str 和 timestamp 用于 (Series DataFrame).describe() (SPARK-37657)
    • 支持 DataFrame.rename 的 lambda column 参数 (SPARK-38763)

其他值得注意的更改

  • 重大变更
    • 删除 docs 和 python/docs 中对 Python 3.6 支持的引用 (SPARK-36977)
    • 通过将内置的 pickle 替换为 cloudpickle 来删除 namedtuple hack (SPARK-32079)
    • 将最低 pandas 版本提升到 1.0.5 (SPARK-37465)
  • 重大改进
    • 为 Python/Pandas UDF 提供一个 profiler (SPARK-37443)
    • 在 PySpark 中使用 Python 的标准字符串格式化程序用于 SQL API (SPARK-37516)
    • 在 PySpark 异常中公开 SQL 状态和错误类 (SPARK-36953)
    • 当 Python worker 崩溃时,尝试捕获 faulthanlder (SPARK-36062)
  • 主要特性
    • 在 Python 中实现 DataFrame.mapInArrow (SPARK-37228)
    • 在 PySpark 中使用 Python 的标准字符串格式化程序用于 SQL API (SPARK-37516)
    • 添加 df.withMetadata pyspark API (SPARK-36642)
    • 支持 Python 的 timedelta (SPARK-37275)
    • 在 pyspark.sql.catalog 中公开 tableExists (SPARK-36176)
    • 在 pyspark.sql.catalog 中公开 databaseExists (SPARK-36207)
    • 在 pyspark sql catalog 中公开 functionExists (SPARK-36258)
    • 向 PySpark 添加 Dataframe.observation (SPARK-36263)
    • 向 PySpark 添加 max_by/min_by API (SPARK-36972)
    • 支持在创建 DataFrame 时推断嵌套 dict 作为 struct (SPARK-35929)
    • 向 Scala、Python 和 R 添加 bit/octet_length API (SPARK-36751)
    • 在 Python 上支持 ILIKE API (SPARK-36882)
    • 为 Python DataFrame API 添加 isEmpty 方法 (SPARK-37207)
    • 添加多列添加支持 (SPARK-35173)
    • 在 PySpark 中添加 SparkContext.addArchive (SPARK-38278)
    • 使 sql type reprs 可 eval (SPARK-18621)
    • 为 python/pyspark/mllib 中的 fpm.py 内联类型提示 (SPARK-37396)
    • 实现 SeriesGroupBy.value_countsdropna 参数 (SPARK-38837)

MLLIB

  • 主要特性
    • 向 trainKMeansModel 添加 distanceMeasure 参数 (SPARK-37118)
    • 公开 LogisticRegression.setInitialModel,就像 KMeans 等一样 (SPARK-36481)
    • 支持 CrossValidatorModel 获取每个 paramMap 的指标的标准偏差 (SPARK-36425)
  • 重大改进
    • 通过延迟分配来优化 MLlib 中的一些 treeAggregates (SPARK-35848)
    • 重写 _shared_params_code_gen.py 以内联 ml/param/shared.py 的类型提示 (SPARK-37419)
  • 其他值得注意的更改

SparkR

UI

  • 阶段级别的推测指标摘要 (SPARK-36038)
  • 在 StagePage 中将统一的 shuffle 读取块时间统一为 shuffle 读取获取等待时间 (SPARK-37469)
  • 在 UI 中为 SQL 执行添加修改后的配置 (SPARK-34735)
  • 使 ThriftServer 识别 spark.sql.redaction.string.regex (SPARK-36400)
  • 在 UI 中应用程序启动后附加并启动处理程序 (SPARK-36237)
  • 将提交持续时间添加到 SQL 选项卡的图形节点 (SPARK-34399)
  • 在 Spark History Server 中支持 RocksDB 后端 (SPARK-37680)
  • 在 UI 中显示 Pandas API on Spark 的选项 (SPARK-38656)
  • 在 SQL UI 页面中将 “SQL” 重命名为 “SQL / DataFrame” (SPARK-38657)

构建

致谢

最后但并非最不重要的是,如果没有以下贡献者,此版本是不可能实现的:Abhishek Somani, Adam Binford, Alex Balikov, Alex Ott, Alfonso Buono, Allison Wang, Almog Tavor, Amin Borjian, Andrew Liu, Andrew Olson, Andy Grove, Angerszhuuuu, Anish Shrigondekar, Ankur Dave, Anton Okolnychyi, Aravind Patnam, Attila Zsolt Piros, BOOTMGR, BelodengKlaus, Bessenyei Balázs Donát, Bjørn Jørgensen, Bo Zhang, Brian Fallik, Brian Yue, Bruce Robbins, Byron, Cary Lee, Cedric-Magnan, Chandni Singh, Chao Sun, Cheng Pan, Cheng Su, Chia-Ping Tsai, Chilaka Ramakrishna, Daniel Dai, Daniel Davies, Daniel Tenedorio, Daniel-Davies, Danny Guinther, Darek, David Christle, Denis Tarima, Dereck Li, Devesh Agrawal, Dhiren Navani, Diego Luis, Dmitriy Fishman, Dmytro Melnychenko, Dominik Gehl, Dongjoon Hyun, Emil Ejbyfeldt, Enrico Minack, Erik Krogen, Eugene Koifman, Fabian A.J. Thiele, Franck Thang, Fu Chen, Geek, Gengliang Wang, Gidon Gershinsky, H. Vetinari, Haejoon Lee, Harutaka Kawamura, Herman van Hovell, Holden Karau, Huaxin Gao, Hyukjin Kwon, Igor Dvorzhak, IonutBoicuAms, Itay Bittan, Ivan Karol, Ivan Sadikov, Jackey Lee, Jerry Peng, Jiaan Geng, Jie, Johan Nystrom, Josh Rosen, Junfan Zhang, Jungtaek Lim, Kamel Gazzaz, Karen Feng, Karthik Subramanian, Kazuyuki Tanimura, Ke Jia, Keith Holliday, Keith Massey, Kent Yao, Kevin Sewell, Kevin Su, Kevin Wallimann, Koert Kuipers, Kousuke Saruta, Kun Wan, Lei Peng, Leona, Leona Yoda, Liang Zhang, Liang-Chi Hsieh, Linhong Liu, Lorenzo Martini, Luca Canali, Ludovic Henry, Lukas Rytz, Luran He, Maciej Szymkiewicz, Manu Zhang, Martin Tzvetanov Grigorov, Maryann Xue, Matthew Jones, Max Gekk, Menelaos Karavelas, Michael Chen, Michał Słapek, Mick Jermsurawong, Microsoft Learn Student, Min Shen, Minchu Yang, Ming Li, Mohamadreza Rostami, Mridul Muralidharan, Nicholas Chammas, Nicolas Azrak, Ole Sasse, Pablo Langa, Parth Chandra, PengLei, Peter Toth, Philipp Dallig, Prashant Singh, Qian.Sun, RabbidHY, Radek Busz, Rahul Mahadev, Richard Chen, Rob Reeves, Robert (Bobby) Evans, RoryQi, Rui Wang, Ruifeng Zheng, Russell Spitzer, Sachin Tripathi, Sajith Ariyarathna, Samuel Moseley, Samuel Souza, Sathiya KUMAR, SaurabhChawla, Sean Owen, Senthil Kumar, Serge Rielau, Shardul Mahadik, Shixiong Zhu, Shockang, Shruti Gumma, Simeon Simeonov, Steve Loughran, Steven Aerts, Takuya UESHIN, Ted Yu, Tengfei Huang, Terry Kim, Thejdeep Gudivada, Thomas Graves, Tim Armstrong, Tom van Bussel, Tomas Pereira de Vasconcelos, TongWeii, Utkarsh, Vasily Malakhin, Venkata Sai Akhil Gudesa, Venkata krishnan Sowrirajan, Venki Korukanti, Vitalii Li, Wang, Warren Zhu, Weichen Xu, Weiwei Yang, Wenchen Fan, William Hyun, Wu, Xiaochang, Xianjin YE, Xiduo You, Xingbo Jiang, Xinrong Meng, Xinyi Yu, XiuLi Wei, Yang He, Yang Liu, YangJie, Yannis Sismanis, Ye Zhou, Yesheng Ma, Yihong He, Yikf, Yikun Jiang, Yimin, Yingyi Bu, Yuanjian Li, Yufei Gu, Yuming Wang, Yun Tang, Yuto Akutsu, Zhen Li, Zhenhua Wang, Zimo Li, alexander_holmes, beobest2, bjornjorgensen, chenzhx, copperybean, daugraph, dch nguyen, dchvn, dchvn nguyen, dgd-contributor, dgd_contributor, dohongdayi, erenavsarogullari, fhygh, flynn, gaoyajun02, gengjiaan, herman, hi-zir, huangmaoyang2, huaxingao, hujiahua, jackierwzhang, jackylee-ch, jiaoqb, jinhai, khalidmammadov, kuwii, leesf, mans2singh, mcdull-zhang, michaelzhang-db, minyyy, nyingping, pralabhkumar, qitao liu, remykarem, sandeepvinayak, senthilkumarb, shane knapp, skhandrikagmail, sperlingxx, sudoliyang, sweisdb, sychen, tan.vu, tanel.kiis@gmail.com, tenglei, tianhanhu, tianlzhang, timothy65535, tooptoop4, vadim, w00507315, wangguangxin.cn, wangshengjie3, wayneguow, wooplevip, wuyi, xiepengjie, xuyu, yangjie01, yaohua, yi.wu, yikaifei, yoda-mon, zhangxudong1, zhoubin11, zhouyifan279, zhuqi-lucas, zwangsheng


Spark 新闻存档