当我为特定的“选择”运行脚本时,它返回这样的错误
由于以下错误,无法在守护进程 sm-bsst1-mngt-01.tst1.dbss.unitel.local:27000 上为查询 a44a17b5e53f7743:6d0b980b00000000 获得 16.00 MB 的最小内存预留:超出内存限制:尝试分配内存时无法分配内存增加预订。查询(a44a17b5e53f7743:6d0b980b00000000) 无法在不超出限制的情况下分配 16.00 MB。后端发生错误 sm-bsst1-mngt-01.tst1.dbss.unitel.local:27000 进程限制中剩余内存: 65.90 MB 查询(a44a17b5e53f7743:6d0b980b00000000): Reservation=0 ReservationLimit=409.60 MB OtherMemory=0 Total=0 Peak=0 内存可能被超额认购。减少查询并发度或配置准入控制可能有助于避免此错误。
Impala select 语句中非常常见的错误。 SQL 的可用内存不足。您需要调整 SQL 或调整资源(内存)。
调整 SQL - 使用正常的调整方法,例如
减少 sql 中的表或列的数量。
应用尽可能多的过滤器。
基于分区列或分桶列进行连接(使用修剪)。
尝试将连接分成多个阶段 - 例如,如果您有 10 个表,其中 2 个非常大,请尝试使用大表创建 2 个 SQL。
使用内连接,但它并不总是非常有效。
检查 SQL 配置文件并查看哪些操作是多余的、不需要的或可以删除的。还要检查哪个操作正在花费时间 - 比如distinct、order by、window 子句。
如果可能的话尝试重新安排sql。
调整资源 - 如果你确实无法调整 SQL,那么你可以执行以下步骤。
更改占用资源的 SQL 计划。您可以使用CDH管理器来查看。
向硬件添加更多内存。 Impalad 需要更多资源。