Clickhouse select count of parquet files from s3 not utilizing metadata when file is small

在clickhouse中select count(*) from s3(…, format=’Parquet’)如果是很小的文件会出现拉取完整文件而不是获取parquet metadata来计算行数。在我的测试中这个阈值大约是1MB,然而根据默认设置 max_download_buffer_size 应该是10MB。

虽不清楚为什么在我的环境中>1MB的文件就会只读取metadata,但是经过和clickhouse member的讨论学习到了一些settings能强制停止prefetch行为。

注:关闭prefetch总体来说会导致查询性能下降。之所以在我的use case中需要关闭prefetch是因为存在gcs inter region data transfer cost。为了减少select count(*)的费用需要关闭prefetch

方法一:

SETTINGS max_download_buffer_size = 1

方法二:

SETTINGS remote_filesystem_read_prefetch = 0

另外补充一点,在clickhouse client中调试时可通过添加 send_logs_level = 'trace'来获取query对应的trace log


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注