【发布时间】:2020-04-06 21:44:33
【问题描述】:
我正在设计一个使用 Python 进行库存交易分析的工具,其中包含 pandas 和 Out of core 工具。这里会有一些大数据(2gb到200gb),所以我用的是Dask。
我的桌子有SKU, STORE, DATE_BY_DAY, SOLD_PRICE, ORDER_VOLUME, INVENTORY_LEVEL.
我使用的是 parquet 格式,按 store 分区(如果按 sku 分区,分区会变得太小)。
我想要以非常低的延迟进行快速查询(主要是按 SKU 和商店进行的一些聚合和过滤器)。问题是我必须随时进行。
除此之外,我必须根据当前库存(在另一张表上)计算每天的库存水平(INVENTORY_LEVEL),还要按日期重新索引,因为源文件中可能缺少一些天数。
Dask 不支持多索引并且排序非常昂贵,因此执行上述计算变得太难和太慢。
到目前为止我的选择和想法:
- 完全迁移到 Spark。 (我目前正在使用 dask)
- 转为面向行的格式。 (我目前正在使用 Parquet)
- 以某种方式更改表架构,例如为
SOLD_PRICE创建一个表,为ORDER_VOLUME创建另一个表,两者均由SKU, STORE索引,日期以列为轴。 - 创建 SKU 和 Store 的串联以减少索引层次结构。
哪些选项可以为我的项目带来性能提升?你能推荐点别的吗?
【问题讨论】:
标签: apache-spark database-design analytics dask parquet