Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将pyspark数据帧分为4个数据帧?_Python_Pyspark_Data Science - Fatal编程技术网

Python 如何将pyspark数据帧分为4个数据帧?

Python 如何将pyspark数据帧分为4个数据帧?,python,pyspark,data-science,Python,Pyspark,Data Science,我有一个超过一百万条记录的pyspark数据帧,我需要将其子集为4个DataFame。例如,在一个数据帧中输入前250万条记录,在下一个数据帧中输入下250万条记录。我该怎么做 我认为最好的方法是通过索引列来实现这一点。 如果没有,最简单的方法是使用.zipWithIndex() 例如: data = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'] rdd = spark.sparkContext.parallelize(data).zipWithIndex()

我有一个超过一百万条记录的pyspark数据帧,我需要将其子集为4个DataFame。例如,在一个数据帧中输入前250万条记录,在下一个数据帧中输入下250万条记录。我该怎么做

我认为最好的方法是通过索引列来实现这一点。 如果没有,最简单的方法是使用
.zipWithIndex()

例如:

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))
df\u part0=df.where(col('id')df的大小)和
(col('id')2*尺寸和
(col('id')3*尺寸和
(col('id'))