0
我有一個包含超過100萬條記錄的pyspark數據框,我需要將子集分爲4個數據庫。像第一個2.5十萬個記錄到一個數據幀和接下來的2.5十萬個記錄到下一個數據幀。我怎樣才能做到這一點?如何將pyspark數據框分爲4個數據框?
我有一個包含超過100萬條記錄的pyspark數據框,我需要將子集分爲4個數據庫。像第一個2.5十萬個記錄到一個數據幀和接下來的2.5十萬個記錄到下一個數據幀。我怎樣才能做到這一點?如何將pyspark數據框分爲4個數據框?
我認爲最好的方法是通過索引列來完成。 如果你沒有一個,最簡單的方法是用創造一個在RDD .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))