【发布时间】:2017-10-26 17:45:12
【问题描述】:
我想删除所有重复条目的记录,但我说时间戳的差异可能是任何时间量的偏移量,但为简单起见将使用 2 分钟。
+-------------------+-----+----+
|Date |ColA |ColB|
+-------------------+-----+----+
|2017-07-04 18:50:21|ABC |DEF |
|2017-07-04 18:50:26|ABC |DEF |
|2017-07-04 18:50:21|ABC |KLM |
+-------------------+-----+----+
我希望我的数据框只有行
+-------------------+-----+----+
|Date |ColA |ColB|
+-------------------+-----+----+
|2017-07-04 18:50:26|ABC |DEF |
|2017-07-04 18:50:21|ABC |KLM |
+-------------------+-----+----+
我尝试了类似的方法,但这不会删除重复项。
val joinedDfNoDuplicates = joinedDFTransformed.as("df1").join(joinedDFTransformed.as("df2"), col("df1.ColA") === col("df2.ColA") &&
col("df1.ColB") === col("df2.ColB") &&
&& abs(unix_timestamp(col("Date")) - unix_timestamp(col("Date"))) > offset
)
目前,我只是在 Find minimum for a timestamp through Spark groupBy dataframe 基于某些列的数据上选择不同的或按分钟分组的,但我想要一个更强大的解决方案,原因是该区间之外的数据可能是有效数据.此外,偏移量可以根据需要在 5 秒或 5 分钟内更改。
有人向我提到创建 UDF 比较日期以及是否所有其他列都相同,但我不确定如何执行此操作,以便我会过滤掉行或添加标志,然后删除这些行有任何帮助将不胜感激。
这里有类似的sql问题Duplicate entries with different timestamp
谢谢!
【问题讨论】:
标签: scala apache-spark spark-dataframe