apache-spark - date=dd-mm-yyyy vs yyyy={xxxx}/mm={mm}/dd={xx}之间的spark分区策略比较
问题描述
如何在日期的火花中选择哪种分区策略。我在数据框中有一列作为 2020-02-19 格式的日期。应该在写入时指定分区列中的日期或从表中的日期创建多个列作为 dd、mm、yyyy 并在重新分区中指定列 yyyy、mm、dd?
如果我指定每个分区策略会出现什么样的问题
解决方案
date=yyyy-mm-dd
在一个分区或多个分区中没有实际的收益突破year=yyyy/month=mm/day=dd
,如果您必须处理过去 10 天将同时提供相同数量的数据。最大的区别在于您查询的方式或维护数据的方式。
使用一个分区,您的生活将很容易编写特定日期的查询。我需要在 3 天前跑步。或者我需要查询从 1 月 1 日到 5 月 1 日的日期范围。拥有一个带有日期的分区可以让您的生活更轻松。
拥有多个分区便于进行月度分析,便于查询整月或整年。但是您将失去查询范围内数据的能力。
除了每种格式的这些功能之外,从性能的角度来看,这不会给您带来任何开销,两种解决方案都会以相同的速度带来数据,因为您不会将数据分解为较小的文件。从易于维护的角度来看,我更喜欢只用一个分区来打破这一天。
推荐阅读
- java - 使用 Glide 和字符串数组在 Resource 中显示图像
- javascript - 循环遍历作为数组的多个对象值并匹配来自另一个充满数组的对象的正确值
- python - 在 Pandas 数据框中编辑列的快速方法
- python-3.x - 懒惰地迭代多处理池中的生成器
- java - Spring Boot REST 资源更改未应用
- c++ - 将 ifloats 表定义为数组的 C++ 干净方法
- c# - ASP.NET 核心。从不使用 JavaScript 的 Select 标记中获取值
- python - 让多个正则表达式协同工作以匹配复杂的字符串集
- c++ - 在 Windows 上使用 VSCode 中的 GDB 进行调试
- python - Django Admin TypeError args[0] = str(args[0]),无法更新或删除对象