0

我试图了解考拉的内部运作。我使用的每个教程都向我展示了三个概念

  1. 火花数据框
  2. 内部框架
  3. 考拉数据框

据我了解,spark dataframe是典型的分布式spark dataframe。现在,这个 spark 数据框需要以 pandas 数据框的形式呈现,以使概念更加清晰,这就是内部框架概念的来源。内部框架保留了诸如 spark 列名 --> pandas 列名和有关信息的映射。指数等

让这张图帮助我们理解: 在此处输入图像描述

看起来 koalas 数据帧只是一个逻辑概念,人们可以将其理解为 spark 数据帧的解析输出,内部帧提供解析器。它是 spark 数据帧的抽象层,有助于使 spark 数据帧适合 koalas API(熊猫风格)

对 koalas 数据帧的每个 API 调用都会创建一个新的内部帧,并且会创建或不创建新的 spark 数据帧。

但是,我也看到了这样的图像:

在此处输入图像描述

这就是我的困惑所在。创建或不创建新的考拉数据框是什么意思?考拉数据框到底是什么?以第一张图片的具体示例为例,在应用诸如此类的操作时,在更改内部框架和 spark 数据帧的同时保持考拉数据帧相同是什么意思kdf.dropna(...,inplace=True)

4

2 回答 2

0

让它太复杂了。

Koalas 项目通过在 Apache Spark 之上实现 pandas DataFrame API,使数据科学家在与大数据交互时更加高效。pandas 是 Python 中事实上的标准(单节点)DataFrame 实现,而 Spark 是大数据处理的事实上的标准。使用此软件包,您可以:

如果您已经熟悉 pandas,则无需学习曲线即可立即使用 Spark。拥有一个既适用于 pandas(测试、较小的数据集)又适用于 Spark(分布式数据集)的代码库。

只是 Spark 数据框之上的一个 API。

于 2021-10-06T07:57:17.423 回答
0

Koalas 的目标之一是在 Spark 之上提供 Pandas API。

现在,B/W Spark DF 和 Pandas DF 存在一些潜在的差异,为了消除这些差异,Koalas 使用了 InternalFrame。例如,Pandas DF 通过索引维护行顺序,而 Spark DF 不维护顺序。

因此,InternalFrame 可以被认为是一个 b/w Spark 和 Pandas 的桥梁(如果您从用户的角度来看它)。

正如您正确提到的:InternalFrame => Spark DF + Immutable Metadata。

而且,在底层,Koalas 根据用户通过 Koalas API 执行的操作维护了一系列 InternalFrames。

现在,对于每个操作,都不需要更改底层的 Spark DF,例如设置一个新列作为索引,然后这样的操作只需要更新元数据。因此,对于这个考拉将创建一个新的 InternalFrame 状态,其中只包含更新的元数据。

同样,如果您在 Koalas DF 上执行 dropna,那么在引擎盖下它以以下方式工作:

当前状态 => Koalas DF --> InternalFrame(当前 Spark DF + 元数据)

新状态 => 相同的考拉 DF 现在指向 --> 新的 InternalFrame(在 dropna + 元数据之后更新了 Spark DF)

总的来说,我们可以说 Koalas API 使用 InternalFrame 的概念在 Spark 之上提供了类似于 Pandas 的 API。因此,只需最少的代码更改,用户就可以从单个节点切换到集群。

于 2021-10-08T06:09:37.883 回答