【发布时间】:2019-02-27 12:51:23
【问题描述】:
我有一个 25k “行” parquet 文件(总计 469.5kb),其中 parquet 中的每个项目都有一个唯一的整数 id。知道了这一点,我已经在此列上放置了一个索引,但在使用 Athena(AWS 服务)/Presto(基础引擎)时,索引列实际上并没有影响性能。我正在尝试一个简单的选择,从我想通过它的 id 拉出其中一行的位置-
SELECT *
FROM widgets w
WHERE w.id = 1
id 列已编入索引,因此一旦 Presto 找到此匹配项,它就不应进行任何进一步的扫描。该列也是有序的,因此它应该能够进行二进制搜索来解析位置而不是哑扫描。
我可以判断索引是否被正确使用,因为 Athena 返回操作中扫描的字节数。无论有没有索引,Athena 都会返回文件本身的字节大小作为扫描大小,这意味着它扫描了整个文件。可以肯定的是,以 id 为第一行的顺序也没有影响。
当前版本的 Athena/Presto 无法做到这一点吗?我正在使用 python、pandas 和 pyarrow。
【问题讨论】:
-
您是如何(使用哪个组件)创建索引的?
标签: python pandas parquet amazon-athena presto