首页 > 解决方案 > Pyspark - 保存和使用先前计算的值

问题描述

我有一个包含数千个文件的数据集,我用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 

每天我都会收到新文件,我只想处理新文件并将数据附加到第一个创建的文件中,而不是每天用更多数据再次处理整个数据集,因为它太长并且已经进行了操作。

另一件事是,例如,我在这里按月拆分(我计算每月的计数),但没有人能保证我会在新文件中有整整一个月(当然不会)。所以我想保留一个柜台或其他东西来恢复我原来的位置。

我想知道是否有某种方法可以做到这一点,或者这根本不可能。

标签: pythonapache-sparkpyspark

解决方案


推荐阅读