首页 > 解决方案 > 如何选择钻头以使用偏移量运行查询?

问题描述

例如,我有两个在不同机器上运行的钻头和一个有 200 行的表。是否可以手动选择drillbit1获取前100 行,drillbit2使用偏移查询获取下100 行并获得合并结果(共200 行)?

因为在我的情况下,我有一个大小约为 500kb 的镶木地板文件,但我无法select * from dfs.'/path/to/parquet/file';通过 web ui 无限制地获取查询结果,因为它返回错误:

RESOURCE ERROR: There is not enough heap memory to run this query using the web interface. 

Please try a query with fewer columns or with a filter or limit condition to limit the data returned. 
You can also try an ODBC/JDBC client.


以下是两个钻头的配置:

机器上的 RAM 大小 = 8G
DRILLBIT_MAX_PROC_MEM = "6G"
DRILL_HEAP = "2G"
DRILL_MAX_DIRECT_MEMORY = "3G"
Apache Drill 版本:1.14.0

我已经按照其他站点上的建议运行了以下查询,以避免堆内存空间错误:

alter session set planner.width.max_per_node = 1
alter system set planner.width.max_per_query = 2

但我仍然面临堆空间错误。任何帮助,将不胜感激。

标签: heap-memorydistributedapache-drill

解决方案


您无需管理钻头执行和合并结果。Drill 在内部为您完成。而且 Drill 中的数据不在堆上,它使用直接内存。堆主要用于Drill计划和执行过程。

看起来您有问题,因为您的 Drill 内存非常有限。Drill 的推荐堆大小为 4-8G,请在此处查看详细信息:https ://drill.apache.org/docs/configuring-drill-memory/

目前所有 Drill 单元测试都无法通过 8G 内存机器,用作 CI(TravisCI 和 CircleCI):https ://github.com/apache/drill/blob/master/.circleci/config.yml#L52


推荐阅读