yes, "hierarchy" is a good option for such dimensions;

2016-07-04 16:56 GMT+08:00 仇同心 <[email protected]>:

> 少峰,您好:
>      "derived" need post aggregation as we know; from Day to Month, it
> need aggregate 30 times data in memory to result set; For Quarter it need
> more; So when the measure is "memory-hungry" measure (like distinct count,
> raw, top-n), it is likely to get the out of memory error; you can try to
> define "month" and "quarter" as normal dimension so to reduce the post
> aggregation.
>
> define "month" and "quarter" as normal dimension so to reduce the post
> aggregation.
> 您的意思是:设置 年、上半年、季度、月、周、日 为normal dimension。那么在aggregation groups
> 时是否需要设置年、上半年、季度、月、周、日为Hierarchies dimensions?
>
> 谢谢!
>
>
> -----邮件原件-----
> 发件人: ShaoFeng Shi [mailto:[email protected]]
> 发送时间: 2016年7月1日 13:23
> 收件人: [email protected]
> 抄送: [email protected]
> 主题: Re: 答复: kylin查询,报超时异常:Timeout visiting cube!
>
> "derived" need post aggregation as we know; from Day to Month, it need
> aggregate 30 times data in memory to result set; For Quarter it need more;
> So when the measure is "memory-hungry" measure (like distinct count, raw,
> top-n), it is likely to get the out of memory error; you can try to define
> "month" and "quarter" as normal dimension so to reduce the post aggregation.
>
> 2016-07-01 11:20 GMT+08:00 仇同心 <[email protected]>:
>
> > 少峰,您好:
> >     two "distinct count" measures, are HyperLogLog counter。
> >
> >    一、 group by b.dim_month_name 这个是derived measure。
> >
> >         测试了下,如果where 条件是月,group by 周   查询时间是66秒, where 条件是周,group by
> > 日,查询时间是9秒
> >
> >         如果where 条件是年,group by 月 ;where 条件是上半年,group by 季度或者月
> > 都会内存溢出错误。
> >
> >         Hbase的heap size大小也调到了32GB。kylin.query.cube.visit.timeout.times
> > 调到了10
> >
> >    二、如果group by的是nomal维度则查询很快
> >
> >    三、如果增加hbase的regionderver是否可解决此问题 ?
> >
> >
> > 谢谢~
> >
> >
> >
> > -----邮件原件-----
> > 发件人: ShaoFeng Shi [mailto:[email protected]]
> > 发送时间: 2016年7月1日 9:32
> > 收件人: dev
> > 抄送: [email protected]
> > 主题: Re: kylin查询,报超时异常:Timeout visiting cube!
> >
> > hi tongxing,
> >
> > The root cause is OutOfMemory:
> >
> >  Caused by: java.lang.OutOfMemoryError
> >
> >         at
> > java.io.ByteArrayOutputStream.hugeCapacity(ByteArrayOutputStream.java:
> > 123)
> >
> >         at
> > java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:117)
> >
> >         at
> > java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.jav
> > a:93)
> >
> >         at
> > java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:153)
> >
> >         at
> >
> >
> org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.CubeVisitService.visitCube(CubeVisitService.java:
> >
> >
> > You query uses two "distinct count" measures, are they HyperLogLog
> > counter or Bitmap counter?
> >
> > 2016-06-30 18:09 GMT+08:00 仇同心 <[email protected]>:
> >
> > > 大家好:
> > >      Kylin查询时报超时异常,sql是:
> > >       select b.dim_month_name,sum(a.ordr_amt) as 订单金额,
> > > sum(a.pay_amt) as 支付金额,count(*) as 订单数,
> > > count(distinct a.user_pin)as 用户数,count(distinct a.is_new) as 新用户数
> > > from dmt.dmt_mem_vip_tx_ordr_det_i_d a left join dim.dim_day b on
> > > a.pay_time=b.dim_day_txdate left join dim.dim_kylin_mem_type_buss c
> > > on a.mem_type=c.mem_type left join dim.dim_kylin_mem_type_source d
> > > on a.mem_type_source=d.mem_type_source
> > > where b.dim_year_name='2016年'
> > > group by b.dim_month_name
> > > order by b.dim_month_name asc
> > > LIMIT 50000
> > >
> > >
> > > 错误日志为:
> > > 016-06-30 17:11:36,149 ERROR [http-bio-7070-exec-10]
> > > controller.QueryController:209 : Exception when execute sql
> > > java.sql.SQLException: Error while executing SQL "select
> > > b.dim_month_name,sum(a.ordr_amt) as 订单金额,
> > > sum(a.pay_amt) as 支付金额,count(*) as 订单数,
> > > count(distinct a.user_pin)as 用户数,count(distinct a.is_new) as 新用户数
> > > from dmt.dmt_mem_vip_tx_ordr_det_i_d a left join dim.dim_day b on
> > > a.pay_time=b.dim_day_txdate left join dim.dim_kylin_mem_type_buss c
> > > on a.mem_type=c.mem_type left join dim.dim_kylin_mem_type_source d
> > > on a.mem_type_source=d.mem_type_source
> > > where b.dim_year_name='2016年'
> > > group by b.dim_month_name
> > > order by b.dim_month_name asc
> > > LIMIT 50000": Timeout visiting cube!
> > >         at
> > > org.apache.calcite.avatica.Helper.createException(Helper.java:56)
> > >         at
> > > org.apache.calcite.avatica.Helper.createException(Helper.java:41)
> > >         at
> > >
> > org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaSta
> > tement.java:143)
> > >         at
> > >
> > org.apache.calcite.avatica.AvaticaStatement.executeQuery(AvaticaStatem
> > ent.java:186)
> > >         at
> > >
> org.apache.kylin.rest.service.QueryService.execute(QueryService.java:361)
> > >         at
> > >
> > org.apache.kylin.rest.service.QueryService.queryWithSqlMassage(QuerySe
> > rvice.java:273)
> > >         at
> > > org.apache.kylin.rest.service.QueryService.query(QueryService.java:121)
> > >         at
> > >
> > org.apache.kylin.rest.service.QueryService$$FastClassByCGLIB$$4957273f
> > .invoke(<generated>)
> > >         at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
> > >         at
> > >
> > org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterce
> > ptor.intercept(Cglib2AopProxy.java:618)
> > >         at
> > >
> > org.apache.kylin.rest.service.QueryService$$EnhancerByCGLIB$$5d1a2567.
> > query(<generated>)
> > >         at
> > > org.apache.kylin.rest.controller.QueryController.doQueryWithCache(Qu
> > > er
> > > yController.java:192)
> > >
> > >
> > > Caught exception in thread pool-8-thr
> > > ead-2:
> > > java.lang.RuntimeException: <sub-thread for GTScanRequest c66d2a5>
> > > Error when visiting cubes by endpoint
> > >         at
> > >
> > org.apache.kylin.storage.hbase.cube.v2.CubeHBaseEndpointRPC$1.run(Cube
> > HBaseEndpointRPC.java:345)
> > >         at
> > > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
> > >         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> > >         at
> > >
> > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.j
> > ava:1142)
> > >         at
> > >
> > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.
> > java:617)
> > >         at java.lang.Thread.run(Thread.java:745)
> > > Caused by: java.net.SocketTimeoutException: callTimeout=60000,
> > > callDuration=109489: row '^@^@' on table 'KYLIN_UVD9MY6HD P' at
> > > region=KYLIN_UVD9MY6HDP,,1467269837242.b987ac977cedbc877732757947111
> > > 20 d., hostname=jxq-23-197-78.h.chinabank.com.c
> > > n,16020,1464677435379, seqNum=2
> > >         at
> > >
> > org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRe
> > tryingCaller.java:169)
> > >         at
> > >
> > org.apache.hadoop.hbase.ipc.RegionCoprocessorRpcChannel.callExecServic
> > e(RegionCoprocessorRpcChannel.java:107)
> > >         at
> > >
> > org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel.callMethod(Coprocess
> > orRpcChannel.java:56)
> > >         at
> > > org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.
> > > CubeVisitProtos$CubeVisitService$Stub.v
> > > isitCube(CubeVisitProtos.java:4225)
> > >         at
> > > org.apache.kylin.storage.hbase.cube.v2.CubeHBaseEndpointRPC$2.call(C
> > > ub
> > > eHBaseEndpointRPC.java:393)
> > > at
> > >
> > org.apache.kylin.storage.hbase.cube.v2.CubeHBaseEndpointRPC$2.call(Cub
> > eHBaseEndpointRPC.java:389)
> > >         at
> > org.apache.hadoop.hbase.client.HTable$15.call(HTable.java:1736)
> > >         ... 4 more
> > > Caused by: java.io.IOException: java.io.IOException
> > >         at
> > org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2169)
> > >         at
> > org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
> > >         at
> > >
> > org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:
> > 133)
> > >         at
> > > org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:108)
> > >         at java.lang.Thread.run(Thread.java:745)
> > > Caused by: java.lang.OutOfMemoryError
> > >         at
> > >
> > java.io.ByteArrayOutputStream.hugeCapacity(ByteArrayOutputStream.java:
> > 123)
> > >         at
> > > java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:117)
> > >         at
> > >
> > java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.jav
> > a:93)
> > >         at
> > > java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:153)
> > >         at
> > >
> >
> org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.CubeVisitService.visitCube(CubeVisitService.java:
> > > 304)
> > >         at
> > > org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.
> > > CubeVisitProtos$CubeVisitService.callMe
> > > thod(CubeVisitProtos.java:4164)
> > > at
> > >
> > org.apache.hadoop.hbase.regionserver.HRegion.execService(HRegion.java:
> > 7483)
> > >         at
> > >
> > org.apache.hadoop.hbase.regionserver.RSRpcServices.execServiceOnRegion
> > (RSRpcServices.java:1891)
> > >         at
> > >
> > org.apache.hadoop.hbase.regionserver.RSRpcServices.execService(RSRpcSe
> > rvices.java:1873)
> > >         at
> > >
> >
> org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:
> > > 32389)
> > >         at
> > org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2127)
> > >         ... 4 more
> > >
> > >         at
> > > sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> > > Method)
> > >         at
> > >
> > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructo
> > rAccessorImpl.java:62)
> > >         at
> > >
> > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingCo
> > nstructorAccessorImpl.java:45)
> > >         at
> > java.lang.reflect.Constructor.newInstance(Constructor.java:408)
> > >         at
> > >
> > org.apache.hadoop.ipc.RemoteException.instantiateException(RemoteExcep
> > tion.java:106)
> > >         at
> > >
> > org.apache.hadoop.ipc.RemoteException.unwrapRemoteException(RemoteExce
> > ption.java:95)
> > >         at
> > >
> > org.apache.hadoop.hbase.protobuf.ProtobufUtil.getRemoteException(Proto
> > bufUtil.java:326)
> > >         at
> > >
> > org.apache.hadoop.hbase.protobuf.ProtobufUtil.execService(ProtobufUtil
> > .java:1622)
> > >         at
> > >
> > org.apache.hadoop.hbase.ipc.RegionCoprocessorRpcChannel$1.call(RegionC
> > oprocessorRpcChannel.java:104)
> > >         at
> > >
> > org.apache.hadoop.hbase.ipc.RegionCoprocessorRpcChannel$1.call(RegionC
> > oprocessorRpcChannel.java:94)
> > >         at
> > >
> > org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRe
> > tryingCaller.java:136)
> > >         ... 10 more
> > > Caused by:
> > >
> >
> org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(java.io.IOException):
> > > java.io.IOException
> > >         at
> > > org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2169)
> > > at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
> > >         at
> > >
> > org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:
> > 133)
> > >         at
> > > org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:108)
> > >         at java.lang.Thread.run(Thread.java:745)
> > > Caused by: java.lang.OutOfMemoryError
> > >         at
> > >
> > java.io.ByteArrayOutputStream.hugeCapacity(ByteArrayOutputStream.java:
> > 123)
> > >         at
> > > java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:117)
> > >         at
> > >
> > java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.jav
> > a:93)
> > >         at
> > > java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:153)
> > >         at
> > >
> >
> org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.CubeVisitService.visitCube(CubeVisitService.java:
> > > 304)
> > >         at
> > > org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.
> > > CubeVisitProtos$CubeVisitService.callMe
> > > thod(CubeVisitProtos.java:4164)
> > >         at
> > >
> > org.apache.hadoop.hbase.regionserver.HRegion.execService(HRegion.java:
> > 7483)
> > >         at
> > >
> > org.apache.hadoop.hbase.regionserver.RSRpcServices.execServiceOnRegion
> > (RSRpcServices.java:1891)
> > >         at
> > >
> > org.apache.hadoop.hbase.regionserver.RSRpcServices.execService(RSRpcSe
> > rvices.java:1873)
> > >         at
> > >
> >
> org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:
> > > 32389)
> > >         at
> > org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2127)
> > >         ... 4 more
> > >
> > >         at
> > > org.apache.hadoop.hbase.ipc.RpcClientImpl.call(RpcClientImpl.java:1235)
> > >         at
> > > org.apache.hadoop.hbase.ipc.AbstractRpcClient.callBlockingMethod(Abs
> > > tr
> > > actRpcClient.java:222
> > > t
> > > org.apache.hadoop.hbase.ipc.AbstractRpcClient$BlockingRpcChannelImpl
> > > em entation.callBlockingMethod(AbstractRpc
> > > Client.java:323)
> > >         at
> > > org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientServic
> > > e$ BlockingStub.execService(ClientProtos.j
> > > ava:32855)
> > >         at
> > >
> > org.apache.hadoop.hbase.protobuf.ProtobufUtil.execService(ProtobufUtil
> > .java:1618)
> > >         ... 13 more
> > >
> > > 目前cube size : 1.5GB  source records :8亿
> > > 版本: hadoop2.6   hive -hive-1.2.1   hbase 1.1.5    kylin 1.5.2
> > >
> > > 还有问题就是都有哪些点可以优化查询???
> > >
> > > 谢谢!
> > >
> > >
> > >
> > >
> > >
> >
> >
> > --
> > Best regards,
> >
> > Shaofeng Shi
> >
>
>
>
> --
> Best regards,
>
> Shaofeng Shi
>



-- 
Best regards,

Shaofeng Shi

Reply via email to