Index: common/src/java/org/apache/hadoop/hive/conf/HiveConf.java =================================================================== --- common/src/java/org/apache/hadoop/hive/conf/HiveConf.java (revision 1062064) +++ common/src/java/org/apache/hadoop/hive/conf/HiveConf.java (working copy) @@ -306,7 +306,12 @@ "org.apache.derby.jdbc.EmbeddedDriver"), // JDBC driver specific to the dbclass HIVESTATSDBCONNECTIONSTRING("hive.stats.dbconnectionstring", "jdbc:derby:;databaseName=TempStatsStore;create=true"), // automatically create database + HIVE_STATS_DEFAULT_PUBLISHER("hive.stats.default.publisher", + ""), // default stats publisher if none of JDBC/HBase is specified + HIVE_STATS_DEFAULT_AGGREGATOR("hive.stats.default.aggregator", + ""), // default stats aggregator if none of JDBC/HBase is specified + // Concurrency HIVE_SUPPORT_CONCURRENCY("hive.support.concurrency", false), HIVE_LOCK_MANAGER("hive.lock.manager", "org.apache.hadoop.hive.ql.lockmgr.zookeeper.ZooKeeperHiveLockManager"), Index: ql/src/java/org/apache/hadoop/hive/ql/stats/StatsFactory.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/stats/StatsFactory.java (revision 1062064) +++ ql/src/java/org/apache/hadoop/hive/ql/stats/StatsFactory.java (working copy) @@ -24,6 +24,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hive.common.JavaUtils; +import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.util.ReflectionUtils; /** @@ -72,8 +73,22 @@ return false; } } else { - // ERROR - return false; + // try default stats publisher/aggregator + String defPublisher = HiveConf.getVar(conf, HiveConf.ConfVars.HIVE_STATS_DEFAULT_PUBLISHER); + String defAggregator = HiveConf.getVar(conf, HiveConf.ConfVars.HIVE_STATS_DEFAULT_AGGREGATOR); + // ERROR no default publisher/aggregator is defined + if (defPublisher == null || deAggregator == null) { + return false; + } + try{ + publisherImplementation = (Class) + Class.forName(defPublisher, true, classLoader); + aggregatorImplementation = (Class) + Class.forName(defAggregator, true, classLoader); + } catch (ClassNotFoundException e) { + LOG.error("JDBC Publisher/Aggregator classes cannot be loaded.", e); + return false; + } } jobConf = conf;