我在下面提到了以镶木地板格式保存的数据集,想要随其加载新数据并更新相同的文件,例如说使用UNION在“ 3”中出现一个新ID,我可以添加该特定新ID。相同的ID再次出现在last_updated列中,带有最新时间戳,我只想保留最新记录。我如何使用Apache Spark和Java来实现这一目标。
+-------+------------+--------------------+---------+
| id|display_name| last_updated|is_active|
+-------+------------+--------------------+---------+
| 1| John|2018-07-23 08:32:...| true|
| 2| Tony|2018-07-22 20:32:...| true|
+-------+------------+--------------------+---------+
答案 0 :(得分:1)
您可以使用“ group by”通过last_update列获取最新行。例如,合并后,您将拥有一个数据集,例如:
+-------+------------+--------------------+---------+
| id|display_name| last_updated|is_active|
+-------+------------+--------------------+---------+
| 1| John|2018-07-23 08:32:...| true|
| 2| Tony|2018-07-22 20:32:...| true|
| 2| Tony|2018-07-22 21:45:...| true|
+-------+------------+--------------------+---------+
首先,您必须将此数据集加载到dataFrame。因此,您应该编写SQL:
select
t1.id, t1.display_name, t1.last_updated, t1.is_active
from
**your_temp_view** as t1
inner join (
select
id, max(last_updated) as max_last_updated
from
**your_temp_view**
group by id
) as t2 on t1.id = t2.id and t1.last_updated = t2.max_last_updated