如何将pyspark数据帧子集化为4个数据帧?

时间:2017-07-04 04:57:05

标签: python pyspark data-science

我有一个包含超过一百万条记录的pyspark数据框,我需要分组到4个数据文件。就像一个数据帧中的第一个2.5万个记录和下一个数据帧中的下一个2.5万个记录一样。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:3)

我认为最好的方法是通过索引列来完成此操作。 如果您没有,最简单的方法是使用.zipWithIndex()

在rdd上创建一个

示例:

data = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
rdd = spark.sparkContext.parallelize(data).zipWithIndex()

然后让我们创建一个DF:

from pyspark.sql.types import *
from pyspark.sql.functions import *
df = spark.createDataFrame(rdd, ['letters', 'id'])

计算尺寸:

size_of_df = df.count()/4

并创建部分df:

df_part0 = df.where(col('id') < size_of_df) 
df_part1 = df.where((col('id') > size_of_df) & 
                    (col('id') <= 2*size_of_df))
df_part2 = df.where((col('id') > 2*size_of_df) & 
                    (col('id') <= 3*size_of_df))
df_part3 = df.where((col('id') > 3*size_of_df) & 
                    (col('id') <= 4*size_of_df))