在 PySpark 的分区内加入 DataFrame

join DataFrames within partitions in PySpark

我有两个具有大量(数百万到数千万)行数的数据框。我想在它们之间进行连接。

在我目前使用的 BI 系统中,您可以通过首先在特定键上进行分区,然后在该键上进行连接来加快速度。

这是我需要在 Spark 中遵循的模式,还是无关紧要?乍一看似乎很多时间都浪费在了分区之间的洗牌数据上,因为它没有被正确地预分区。

如果有必要,我该怎么做?

If it is necessary, then how do I do that?

但是只有在两种情况下才有意义:

  • 同一个应用程序有多个连接。分区会自行洗牌,因此如果它是单个连接,则没有附加值。
  • 这是一个长期存在的应用程序,将重用随机数据。 Spark 无法利用以外部格式存储的数据的分区。