我需要帮助来提高运行json聚合查询的性能。
我在json上的简单count(*)聚合查询只需11分钟就能完成640 My的数据。
我有一个单节点集群(8个核心,8GB内存,使用本地SSD存储)。
数据统计:
在演练UI中,我可以看到以下内容:
持续时间: 11分钟27.665秒*计划*:06分钟30.337秒排队:不可执行: 04分钟57.328秒
我能做些什么来提高性能呢?是否需要更改json文件的存储或压缩以提高读取性能?
发布于 2017-11-09 15:30:44
几件事:
如前所述,这是一个如此小的数据集的大量文件。我通常会发现,在100到200 to范围内的文件、待处理的整体数据集大小和用例中,演练最好。然后,在JSON和查询的复杂性以及系统的速度之前,它通常可以以100到200 of /s的速度处理JSON。
您可以使用演练在数据集中创建较小的文件集,尝试对当前数据集执行CTAS,并将格式设置为JSON。此外,将store.json.writer.uglify设置为true将编写更紧凑的JSON,使用更少的空白(但更少的人类可读性)。或者简单地将当前文件合并到大约100到200 Or的文件与另一个工具。
在JSON上的count()并不像听起来那么简单。如果您试图理解记录的总数,您可以选择一个存在于所有记录中的字段,然后具体地对该字段进行计数。如果您需要执行类似平坦的嵌套操作,您仍然可以选择一个将出现在所有记录中的字段。我发现它比简单的JSON数据计数()更好、更可靠。
https://stackoverflow.com/questions/47187858
复制相似问题