0

我正在尝试将我们的“老派”数据库(主要是时间序列)迁移到 Azure 数据湖。

所以我拿了一张随机表(10 年的数据,2 亿条记录,20Gb),将数据复制到单个 csv 文件中,也复制到相同的数据中,并创建了 4000 个每日文件(在每月文件夹中)。

在这两组文件之上,我创建了 2 个外部表....而且我得到的性能几乎相同。(?!?)

无论我在查询什么,无论我是在一天内查找数据(因此在一个小文件中)还是对整个数据集进行求和......基本上都需要 3 分钟,无论我在寻找在单个文件或每日文件 (4000) 中。就好像在做任何事情之前必须将整个数据集加载到内存中?!?

那么是否有一个我可以更改的设置,以避免在不需要时加载所有数据?它实际上可以使我的查询速度提高 1000 倍。

据我了解,外部表上不可能有索引。创建物化视图将破坏使用 Lake 的目的。吨

全面披露; 我是 Azure 数据存储的新手,我正在尝试看看它是否是解决我们问题的正确技术。

4

1 回答 1

0

最佳做法是使用 Parquet 格式,而不是 CSV。它是一种针对类 OLAP 查询优化的列格式。

借助 Synapse Preview,您可以在不需要配置 DW 集群时使用 SQL 按需引擎(无服务器技术),并且您将按每 Tb 扫描数据付费。

或者您可以启动 Synapse 集群并使用 COPY 命令将数据摄取到 DW 中(它也处于预览状态)。

于 2020-07-02T20:39:50.937 回答