Hi everyone.

   I faced the problem of executing query. We have table with 150 rows, if you 
try execute query  with huge offset, order by  and using limit, phoenix will be 
crushed with such problem:


Example query:

Select * from table order by col1 , col2 limit 1000 offset 15677558;

Caused by:

Error: org.apache.phoenix.exception.PhoenixIOException: 
org.apache.hadoop.hbase.DoNotRetryIOException: 
TABLE,,1524572088462.899bce582428250714db99a6b679e435.: Requested memory of 
4201719544 bytes is larger than global pool of 272655974 bytes.
        at 
org.apache.phoenix.util.ServerUtil.createIOException(ServerUtil.java:96)
        at 
org.apache.phoenix.util.ServerUtil.throwIOException(ServerUtil.java:62)
        at 
org.apache.phoenix.coprocessor.BaseScannerRegionObserver$RegionScannerHolder.overrideDelegate(BaseScannerRegionObserver.java:264)
        at 
org.apache.phoenix.coprocessor.BaseScannerRegionObserver$RegionScannerHolder.nextRaw(BaseScannerRegionObserver.java:293)
        at 
org.apache.hadoop.hbase.regionserver.RSRpcServices.scan(RSRpcServices.java:2808)
        at 
org.apache.hadoop.hbase.regionserver.RSRpcServices.scan(RSRpcServices.java:3045)
        at 
org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:36613)
        at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2352)
        at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:124)
        at 
org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:297)
        at 
org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:277)
Caused by: org.apache.phoenix.memory.InsufficientMemoryException: Requested 
memory of 4201719544 bytes is larger than global pool of 272655974 bytes.
        at 
org.apache.phoenix.memory.GlobalMemoryManager.allocateBytes(GlobalMemoryManager.java:66)
        at 
org.apache.phoenix.memory.GlobalMemoryManager.allocate(GlobalMemoryManager.java:89)
        at 
org.apache.phoenix.memory.GlobalMemoryManager.allocate(GlobalMemoryManager.java:95)
        at 
org.apache.phoenix.iterate.NonAggregateRegionScannerFactory.getTopNScanner(NonAggregateRegionScannerFactory.java:315)
        at 
org.apache.phoenix.iterate.NonAggregateRegionScannerFactory.getRegionScanner(NonAggregateRegionScannerFactory.java:163)
        at 
org.apache.phoenix.coprocessor.ScanRegionObserver.doPostScannerOpen(ScanRegionObserver.java:72)
        at 
org.apache.phoenix.coprocessor.BaseScannerRegionObserver$RegionScannerHolder.overrideDelegate(BaseScannerRegionObserver.java:245)
        ... 8 more (state=08000,code=101)


But if you remove "order by" or "limit " problem will gone. 


Versions:
Phoenix:  4.13.1
Hbase: 1.3
Hadoop : 2.6.4

Reply via email to