我有成千上万个文件的数据集,并使用 PySpark 对其进行读取/处理。
首先,我创建了类似于以下函数的函数来处理整个数据集,并且效果很好。
def get_volume_spark(data):
days = lambda i: i * 86400 # This is 60sec*60min*24h
partition = Window.partitionBy("name").orderBy(F.col("date").cast("long")).rangeBetween(days(-31), days(0))
data = data.withColumn("monthly_volume", F.count(F.col("op_id")).over(partition))\
.filter(F.col("monthly_volume") >= COUNT_THRESHOLD)
return data
每天我都会收到新文件,我只想处理新文件,然后将数据附加到第一个创建的文件中,而不是每天都用更多数据再次处理整个数据集,因为这样做也是如此很长时间,并且已经进行了操作。
另一件事是,例如,在这里我按月划分(我计算每月计数),但是没有人可以确保我在新文件中有整整一个月(当然没有)。因此,我想保留一个柜台或其他可以恢复原状的地方。
我想知道是否有某种方法可以做到这一点,或者根本不可能做到。