Uploaded image for project: 'Kylin'
  1. Kylin
  2. KYLIN-975

change kylin.job.hive.database.for.intermediatetable cause job to fail

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • v0.7.2
    • v1.1, v1.4.0
    • Job Engine
    • None

    Description

      KYLIN-883 introduces "kylin.job.hive.database.for.intermediatetable" so that user can specify a database where kylin's intermediate tables are stored. However the feature is broken and cause cube creation to fail at "Extract Fact Table Distinct Columns" step.

      [pool-7-thread-2]:[2015-08-28 16:16:27,740][ERROR][org.apache.kylin.job.common.MapReduceExecutable.doWork(MapReduceExecutable.java:116)] - error execute MapReduceExecutable{id=6c0bc4ac-5a94-448a-ae5d-3dd523954a57-01, name=Extract Fact Table Distinct Columns, state=RUNNING}
      java.io.IOException: NoSuchObjectException(message:DEFAULT.kylin_intermediate_kylin_sales_cube_desc_19700101000000_20150822000000_6c0bc4ac_5a94_448a_ae5d_3dd523954a57 table not found)
              at org.apache.hive.hcatalog.mapreduce.HCatInputFormat.setInput(HCatInputFormat.java:97)
              at org.apache.hive.hcatalog.mapreduce.HCatInputFormat.setInput(HCatInputFormat.java:51)
              at org.apache.kylin.job.hadoop.cube.FactDistinctColumnsJob.setupMapper(FactDistinctColumnsJob.java:101)
              at org.apache.kylin.job.hadoop.cube.FactDistinctColumnsJob.run(FactDistinctColumnsJob.java:77)
              at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
              at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
              at org.apache.kylin.job.common.MapReduceExecutable.doWork(MapReduceExecutable.java:113)
              at org.apache.kylin.job.execution.AbstractExecutable.execute(AbstractExecutable.java:107)
              at org.apache.kylin.job.execution.DefaultChainedExecutable.doWork(DefaultChainedExecutable.java:51)
              at org.apache.kylin.job.execution.AbstractExecutable.execute(AbstractExecutable.java:107)
              at org.apache.kylin.job.impl.threadpool.DefaultScheduler$JobRunner.run(DefaultScheduler.java:130)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
              at java.lang.Thread.run(Thread.java:745)
      Caused by: NoSuchObjectException(message:DEFAULT.kylin_intermediate_kylin_sales_cube_desc_19700101000000_20150822000000_6c0bc4ac_5a94_448a_ae5d_3dd523954a57 table not found)
              at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.get_table(HiveMetaStore.java:1605)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:606)
              at org.apache.hadoop.hive.metastore.RetryingHMSHandler.invoke(RetryingHMSHandler.java:105)
              at com.sun.proxy.$Proxy50.get_table(Unknown Source)
              at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.getTable(HiveMetaStoreClient.java:997)
              at org.apache.hive.hcatalog.common.HCatUtil.getTable(HCatUtil.java:191)
              at org.apache.hive.hcatalog.mapreduce.InitializeInput.getInputJobInfo(InitializeInput.java:117)
              at org.apache.hive.hcatalog.mapreduce.InitializeInput.setInput(InitializeInput.java:86)
              at org.apache.hive.hcatalog.mapreduce.HCatInputFormat.setInput(HCatInputFormat.java:95)
              ... 13 more
      

      The reason is in CubingJobBuilder.java, we didn't pass the configured database name into createFactDistinctColumnsStep.

      addCubingSteps(CubeSegment seg, String cuboidRootPath, CubingJob result) {
              // ...code ommitted...
              final CubeJoinedFlatTableDesc intermediateTableDesc = new CubeJoinedFlatTableDesc(seg.getCubeDesc(), seg);
              
              // SHOULE BE dbname.tblname, BUT WAS tblname
              final String intermediateHiveTableName = getIntermediateHiveTableName(intermediateTableDesc, jobId);
              
              // ...code ommitted...
              result.addTask(createFactDistinctColumnsStep(seg, intermediateHiveTableName, jobId));
      

      Attachments

        1. KYLIN-975.0.7-staging.patch
          2 kB
          Dayue Gao
        2. KYLIN-975.0.8.patch
          7 kB
          Dayue Gao
        3. KYLIN-975.patch
          3 kB
          Dayue Gao

        Issue Links

          Activity

            People

              shaofengshi Shao Feng Shi
              gaodayue Dayue Gao
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: