python - 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
每天我都会收到新文件,我只想处理新文件并将数据附加到第一个创建的文件中,而不是每天用更多数据再次处理整个数据集,因为它太长并且已经进行了操作。
另一件事是,例如,我在这里按月拆分(我计算每月的计数),但没有人能保证我会在新文件中有整整一个月(当然不会)。所以我想保留一个柜台或其他东西来恢复我原来的位置。
我想知道是否有某种方法可以做到这一点,或者这根本不可能。
解决方案
推荐阅读
- javascript - 来自外部文件的 NodeJS ExpressJS 路由不起作用抛出 404 错误
- python - 使用全局语句从类中传递python列表
- angular - Angular - 添加用户(POST)
- regex - 不能使非贪婪匹配工作
- optimization - 带约束的凸多边形中直线长度的最大总和
- angular - 为什么 JHipster JDL 只为角度/打字稿代码的枚举表达式生成字符串值?
- javascript - nodejs 承诺更好的方法来处理承诺实现中发生的错误?
- javascript - 使用 AngularJS 中的复选框按多个条件过滤数据
- jupyter-notebook - 信任 Jupyter 不受信任的笔记本
- swift - 检测命令行工具何时退出