【发布时间】:2020-04-16 20:42:05
【问题描述】:
我已经尝试了下面的代码。下面脚本的想法是按 id 和时间戳对记录进行排序,并按处理的时间戳按降序排列,但是当我尝试运行查询时,它并没有按处理的时间戳按降序排列记录。它甚至丢弃了最新记录并保留了不应该的旧记录
df2 = df_concat.orderBy("id", "processed_timestamp", f.col("processed_timestamp").desc()).dropDuplicates(["id"])
我也尝试了下面的方法,但是当我尝试将其转换回数据框时,表架构现在不同了,记录现在位于单个列中并用逗号分隔。它还会丢弃最新记录并保留不应该的旧记录
def selectRowByTimeStamp(x,y):
if x.processed_timestamp > y.processed_timestamp:
return x
return y
dataMap = df_concat.rdd.map(lambda x: (x.id, x))
newdata = dataMap.reduceByKey(selectRowByTimeStamp)
我不确定我是否正确理解了上述代码的工作原理。
【问题讨论】: