【问题标题】:Pyspark coalesce vs coalesce: secretly the same or just unfortunate naming?Pyspark coalesce vs coalesce:秘密相同或只是不幸的命名?
【发布时间】:2020-05-20 18:00:21
【问题描述】:

我正在阅读Spark: the definitive guide,但有些东西让我感到困惑。函数coalesce 在完全不同的上下文中被多次定义。我想知道这是否是同一个功能,我只是没有看到链接,或者这是否只是一个不幸的命名问题。

在第 80 页的“重新分区和合并”一章下,它说:

Coalesce [...] 不会导致完全洗牌,而是会尝试合并分区。

据我了解,此函数将合并分区,直到它具有coalesce 函数的参数所指示的所需分区数。

在第 103 页的“合并”一章下,它说:

Spark 包含一个函数,允许您使用 coalesce 函数从一组列中选择第一个非空值。

据我了解,此函数将采用一组列,并从第一列中获取所有非空值。然后对于空值,它会查看第二列,并在那里获取所有非空值,依此类推。

我的问题

  • 我对这些函数的理解正确吗?
  • 这些函数有什么关系?有没有我看不到的链接?
  • 如果不是,为什么他们会有相同的名字? (这让我很困惑。)

【问题讨论】:

    标签: python apache-spark pyspark


    【解决方案1】:

    你的理解是正确的。要回答您的主题中的问题,我会说这只是一个(不是很)不幸的命名

    coalesce() 作为 RDD 或 Dataset 方法旨在减少分区数量,正如您所注意到的。谷歌的字典是这样说的:

    聚在一起形成一个整体。

    或者,(作为及物动词):

    将(元素)组合成一个整体或整体。

    RDD.coalesce(n)DataFrame.coalesce(n) 使用后一种含义。

    pyspark.sql.functions.coalesce()我相信是Spark自己实现的常用SQL函数COALESCE,很多RDBMS系统都实现了这个功能,比如MS SQLOracle。 正如您所注意到的,这个 SQL 函数既可以在程序代码中直接调用,也可以在 SQL 语句中调用,它返回第一个非空表达式,就像其他 SQL 发行版的实现一样。
    在这种情况下,coalesce 并不孤单。 rtrimtruncdate_add 等函数都可以在许多其他 RDBMS 发行版中找到,并且(至少就我所见)是非常标准的。

    有一种方法可以将“coalesce”解释为“come together...”,意思是这个实现是什么(参数合并为一个,null 或第一个非 null) p>

    换句话说,两者之间的主要联系是意义。即使我对亲密的实现细节不是很熟悉,我也无法猜测RDD.coalescefunctions.coalesce 之间存在实现级别的关系,就像RDD.coalesceDataFrame.coalesce 之间的关系一样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-23
      • 2015-06-09
      • 2011-06-12
      • 2012-09-30
      • 1970-01-01
      • 1970-01-01
      • 2016-09-24
      相关资源
      最近更新 更多