为了账号安全,请及时绑定邮箱和手机立即绑定

Pyspark coalesce vs coalesce:秘密相同或只是不幸的命名?

Pyspark coalesce vs coalesce:秘密相同或只是不幸的命名?

慕尼黑的夜晚无繁华 2022-10-25 10:32:42
我正在阅读Spark:权威指南,但有些东西让我感到困惑。该函数coalesce在完全不同的上下文中被多次定义。我想知道这是否是相同的功能,我只是没有看到链接,或者这是否只是一个不幸的命名问题。在第 80 页的“重新分区和合并”一章下,它说:Coalesce[...] 不会导致完全洗牌,而是会尝试合并分区。据我了解,此函数将组合分区,直到它具有函数参数所指示的所需分区数coalesce。在第 103 页的“合并”一章下,它说:Spark 包含一个函数,允许您使用该函数从一组列中选择第一个非空值coalesce。据我了解,此函数将采用一组列,并从第一列中获取所有非空值。然后对于空值,它将查看第二列,并在那里获取所有非空值,依此类推。我的问题我对这些功能的理解是否正确?这些功能有什么关系?有没有我没看到的链接?如果不是,为什么他们会有相同的名字?(这对我来说似乎真的很困惑。)
查看完整描述

1 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

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

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

聚集在一起形成一个质量或整体。

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

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

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

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

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

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


查看完整回答
反对 回复 2022-10-25
  • 1 回答
  • 0 关注
  • 140 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信