Error happen while executing the sql below:
select FID,MIN(CRASHTIME) as FIRST_CRASHTIME,MAX(CRASHTIME) as 
LAST_CRASHTIME,count(1) as CRASH_CNT,count(distinct FIMEI) as 
AFFECT_USER,FPACKAGE_NAME,FCRASH_POINT from EDL_FDT_OUC_UPLOAD_FILES where 
UPLOAD_TIME>20160705000000 and UPLOAD_TIME<20160707000000 group by 
FID,FPACKAGE_NAME,FCRASH_POINT order by count(1) desc limit 20
============
Caused by: java.util.NoSuchElementException
        at java.util.ArrayList$Itr.next(ArrayList.java:834)
        at java.util.Collections.min(Collections.java:665)
        at 
org.apache.kylin.cube.cuboid.Cuboid.translateToValidCuboid(Cuboid.java:217)
        at 
org.apache.kylin.cube.cuboid.Cuboid.translateToValidCuboid(Cuboid.java:141)
        at org.apache.kylin.cube.cuboid.Cuboid.findById(Cuboid.java:83)
        at org.apache.kylin.cube.cuboid.Cuboid.identifyCuboid(Cuboid.java:68)
        at 
org.apache.kylin.storage.gtrecord.GTCubeStorageQueryBase.search(GTCubeStorageQueryBase.java:97)
        at 
org.apache.kylin.query.enumerator.OLAPEnumerator.queryStorage(OLAPEnumerator.java:120)
        at 
org.apache.kylin.query.enumerator.OLAPEnumerator.moveNext(OLAPEnumerator.java:69)
        at Baz$1$1.moveNext(Unknown Source)
        at 
org.apache.calcite.linq4j.EnumerableDefaults.groupBy_(EnumerableDefaults.java:819)
        at 
org.apache.calcite.linq4j.EnumerableDefaults.groupBy(EnumerableDefaults.java:754)
        at 
org.apache.calcite.linq4j.DefaultEnumerable.groupBy(DefaultEnumerable.java:302)
        at Baz.bind(Unknown Source)
        at 
org.apache.calcite.jdbc.CalcitePrepare$CalciteSignature.enumerable(CalcitePrepare.java:326)
        at 
org.apache.calcite.jdbc.CalciteConnectionImpl.enumerable(CalciteConnectionImpl.java:281)
        at 
org.apache.calcite.jdbc.CalciteMetaImpl._createIterable(CalciteMetaImpl.java:545)
        at 
org.apache.calcite.jdbc.CalciteMetaImpl.createIterable(CalciteMetaImpl.java:536)
        at 
org.apache.calcite.avatica.AvaticaResultSet.execute(AvaticaResultSet.java:187)
        at 
org.apache.calcite.jdbc.CalciteResultSet.execute(CalciteResultSet.java:65)
        at 
org.apache.calcite.jdbc.CalciteResultSet.execute(CalciteResultSet.java:44)
        at 
org.apache.calcite.avatica.AvaticaConnection$1.execute(AvaticaConnection.java:566)
        at 
org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:578)
        at 
org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:571)
        at 
org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:135)
        ... 80 more

looks like it is doing a further agg, may be agg.getJoints() is empty,need to 
do a empty check before Collections.min:

 org.apache.kylin.cube.cuboid.Cuboid.translateToValidCuboid(Cuboid.java:217)
=======================================
            return cuboidID | Collections.min(agg.getJoints(), 
cuboidSelectComparator);
________________________________
赵天烁
Kevin Zhao
[email protected]<mailto:[email protected]>

珠海市魅族科技有限公司
MEIZU Technology Co., Ltd.
广东省珠海市科技创新海岸魅族科技楼
MEIZU Tech Bldg., Technology & Innovation Coast
Zhuhai, 519085, Guangdong, China
meizu.com

Reply via email to