pyspark 中的 windowPartitionBy 和重新分区
windowPartitionBy and repartition in pyspark
我在 SparkR 中有一小段代码,我想将其转换为 pyspark。我不熟悉这个windowPartitionBy,和repartition。你能帮我了解这段代码的作用吗?
ws <- orderBy(windowPartitionBy('A'),'B')
df1 <- df %>% select(df$A, df$B, df$D, SparkR::over(lead(df$C,1),ws))
df2 <- repartition(col = df1$D)
在 pyspark 中相当于:
from pyspark.sql import functions as F, Window
ws = Window.partitionBy('A').orderBy('B')
df1 = df.select('A', 'B', 'D', F.lead('C', 1).over(ws))
df2 = df1.repartition('D')
代码是从 df
中选择 window ws
中下一行的 A、B、D 列和 C 列到 df1
中。
然后使用 D 列将 df1
重新分区为 df2
。基本上,分区意味着您的数据帧如何分布在 memory/storage 中,并且直接影响它的并行处理方式。如果您想了解有关重新分区数据帧的更多信息,可以转到https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.DataFrame.repartition
我在 SparkR 中有一小段代码,我想将其转换为 pyspark。我不熟悉这个windowPartitionBy,和repartition。你能帮我了解这段代码的作用吗?
ws <- orderBy(windowPartitionBy('A'),'B')
df1 <- df %>% select(df$A, df$B, df$D, SparkR::over(lead(df$C,1),ws))
df2 <- repartition(col = df1$D)
在 pyspark 中相当于:
from pyspark.sql import functions as F, Window
ws = Window.partitionBy('A').orderBy('B')
df1 = df.select('A', 'B', 'D', F.lead('C', 1).over(ws))
df2 = df1.repartition('D')
代码是从 df
中选择 window ws
中下一行的 A、B、D 列和 C 列到 df1
中。
然后使用 D 列将 df1
重新分区为 df2
。基本上,分区意味着您的数据帧如何分布在 memory/storage 中,并且直接影响它的并行处理方式。如果您想了解有关重新分区数据帧的更多信息,可以转到https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.DataFrame.repartition