hive参数hive.mapred.mode分析
hive参数hive.mapred.mode分析
// Use only 1 reducer in case of cartesian product if (reduceKeys.size() == 0) { numReds = 1; // Cartesian product is not supported in strict mode if (conf.getVar(HiveConf.ConfVars.HIVEMAPREDMODE).equalsIgnoreCase( "strict")) { throw new SemanticException(ErrorMsg.NO_CARTESIAN_PRODUCT.getMsg()); } }
if (sortExprs == null) { sortExprs = qb.getParseInfo().getOrderByForClause(dest); if (sortExprs != null) { assert numReducers == 1; // in strict mode, in the presence of order by, limit must be specified Integer limit = qb.getParseInfo().getDestLimit(dest); if (conf.getVar(HiveConf.ConfVars.HIVEMAPREDMODE).equalsIgnoreCase( "strict") && limit == null) { throw new SemanticException(generateErrorMessage(sortExprs, ErrorMsg.NO_LIMIT_WITH_ORDERBY.getMsg())); } } }
// If the "strict" mode is on, we have to provide partition pruner for // each table. if ("strict".equalsIgnoreCase(HiveConf.getVar(conf, HiveConf.ConfVars.HIVEMAPREDMODE))) { if (!hasColumnExpr(prunerExpr)) { throw new SemanticException(ErrorMsg.NO_PARTITION_PREDICATE .getMsg("for Alias \"" + alias + "\" Table \"" + tab.getTableName() + "\"")); } }
评论暂时关闭