Kylin執(zhí)行查詢語句的時候報錯如下:
成都創(chuàng)新互聯(lián)是一家專業(yè)提供浦東企業(yè)網(wǎng)站建設(shè),專注與做網(wǎng)站、成都網(wǎng)站設(shè)計、H5開發(fā)、小程序制作等業(yè)務(wù)。10年已為浦東眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
Error while executing SQL "select t.hotel_id_m,t.live_dt, d.day_of_week,sum(rns) from tableT t join TableD d on t.live_dt = d.daY_no group by t.hotel_id_m,t.live_dt, d.day_of_week LIMIT 50000":
查看regionserver日志
2017-03-20 11:10:05,436 INFO [Query dc7017bb-fefc-4177-a2c9-5842625beb89-109] endpoint.CubeVisitService: Scanned 9999001 rows from HBase.
2017-03-20 11:10:05,454 INFO [Query dc7017bb-fefc-4177-a2c9-5842625beb89-109] endpoint.CubeVisitService: The cube visit did not finish normally because scan num exceeds threshold
org.apache.kylin.gridtable.GTScanExceedThresholdException: Exceed scan threshold at 10000001
at org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.CubeVisitService$1.hasNext(CubeVisitService.java:258)
at org.apache.kylin.storage.hbase.cube.v2.HBaseReadonlyStore$1$1.hasNext(HBaseReadonlyStore.java:111)
at org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.CubeVisitService.visitCube(CubeVisitService.java:290)
at org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos$CubeVisitService.callMethod(CubeVisitProtos.java:4117)
at org.apache.hadoop.hbase.regionserver.HRegion.execService(HRegion.java:7797)
at org.apache.hadoop.hbase.regionserver.RSRpcServices.execServiceOnRegion(RSRpcServices.java:1982)
at org.apache.hadoop.hbase.regionserver.RSRpcServices.execService(RSRpcServices.java:1964)
at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:33652)
at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2170)
at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:109)
at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:185)
at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:165)
2017-03-20 11:10:05,459 WARN [RpcServer.FifoWFPBQ.default.handler=59,queue=5,port=60020] ipc.RpcServer: (responseTooSlow): {"call":"ExecService(org.apache.hadoop.hbase.protobuf.generated.ClientProtos$CoprocessorServiceRequest)","starttimems":1489979376495,"responsesize":359,"method":"ExecService","processingtimems":28964,"client":"10.10.16.102:58720","queuetimems":1,"class":"HRegionServer"}
分析解決:
在${KYLIN_HOME}/conf/kylin.property配置文件中有一個配置項
kylin.query.scan.threshold=10000000
這個配置項限制了Hbase scan的行數(shù),當(dāng)scan超過kylin.query.scan.threshold行的時候還是不能滿足查詢需求,則kylin取消hbase端的查詢。
目前暫時有兩種方式解決
1、增加kylin.query.scan.threshold值,這相應(yīng)也會增加hbase壓力,在Hbase能夠頂住查詢壓力的情況下,可以增大該值
2、此次查詢語句中有LIMIT 50000,Hbase在scan了kylin.query.scan.threshold行之后,讓不能掃描出50000行??梢詼p小LIMIT的值,在Hbase在scan到達(dá)kylin.query.scan.threshold之前,就能滿足查詢要求。則不會出現(xiàn)這個問題