我有一个很大(超过 8.5GB)的 CSV 文件,该文件在每个月的第一天更新。但从每个月的 2 日到最后一天,它可以有 JSON 格式的新更新数据。
我将 CSV 转换为 panquet 并在 Apache Drill 中进行查询,效果很好。但是如何用更新后的文件查询大文件呢?
例如 在 4 月 1 日的 CSV 文件中,它有
ID Name Value LastUpdatedTime
100 John 98 2024-01-05
在 4 月 15 日的 JSON 文件中,有
ID Name Value LastUpdatedTime
100 John 100 2024-04-15
当它查询所有这些文件的 ID = 100 时,它应该给出 Value=100,因为它有较新的 LastUpdatedTime。
我发现这篇post说人们对不再变化的数据使用Drill。
这是真的吗?
Drill 确实不支持修改现有数据,但我认为您在这里不需要这样做。你有没有尝试过类似的事情
with combined as (
select ID, Name, Value, LastUpdatedTime from dfs.csv_data
union all
select ID, Name, Value, LastUpdatedTime from dfs.json_data
), ranked as (
select *, row_number() over (partition by ID, order by LastUpdatedTime desc) rank
)
select * from ranked where rank = 1;
?