use of com.sap.hadoop.windowing.WindowingException in project SQLWindowing by hbutani.
the class Translator method translate.
public QueryDef translate(QuerySpec qSpec, WindowingShell wShell) throws WindowingException {
// clone the cfg
HiveConf qCfg = new HiveConf(wShell.getCfg());
QueryDef qry = new QueryDef();
qry.setSpec(qSpec);
QueryTranslationInfo transInfo = new QueryTranslationInfo();
transInfo.setHiveCfg(qCfg);
transInfo.setWshell(wShell);
try {
transInfo.setHive(Hive.get(qCfg));
transInfo.setHiveMSClient(HiveUtils.getClient(qCfg));
} catch (HiveException he) {
throw new WindowingException(he);
}
qry.setTranslationInfo(transInfo);
InputTranslation.translate(qry);
WhereTranslation.translate(qry);
OutputTranslation.translate(qry);
return qry;
}
use of com.sap.hadoop.windowing.WindowingException in project SQLWindowing by hbutani.
the class WindowFunctionTranslation method setupRankingArgs.
static void setupRankingArgs(QueryDef qDef, TableFuncDef windowTableFnDef, WindowFunctionDef wFnDef, WindowFunctionSpec wSpec) throws WindowingException {
if (wSpec.getArgs().size() > 0) {
throw new WindowingException("Ranking Functions can take no arguments");
}
QueryInputDef inpDef = windowTableFnDef.getInput();
InputInfo inpInfo = qDef.getTranslationInfo().getInputInfo(inpDef);
OrderDef oDef = getTableFuncOrderDef(windowTableFnDef);
ArrayList<OrderColumnDef> oCols = oDef.getColumns();
for (OrderColumnDef oCol : oCols) {
wFnDef.addArg(TranslateUtils.buildArgDef(qDef, inpInfo, oCol.getExpression()));
}
}
use of com.sap.hadoop.windowing.WindowingException in project SQLWindowing by hbutani.
the class WindowFunctionTranslation method validateWindowDefForWFn.
public static void validateWindowDefForWFn(TableFuncDef tFnDef, WindowFunctionDef wFnDef) throws WindowingException {
WindowDef tWindow = tFnDef.getWindow();
WindowDef fWindow = wFnDef.getWindow();
PartitionDef tPart = tWindow == null ? null : tWindow.getPartDef();
PartitionDef fPart = fWindow == null ? null : fWindow.getPartDef();
if (!TranslateUtils.isCompatible(tPart, fPart)) {
throw new WindowingException(sprintf("Window Function '%s' has an incompatible partition clause", wFnDef.getSpec()));
}
OrderDef tOrder = tWindow == null ? null : tWindow.getOrderDef();
OrderDef fOrder = fWindow == null ? null : fWindow.getOrderDef();
if (!TranslateUtils.isCompatible(tOrder, fOrder)) {
throw new WindowingException(sprintf("Window Function '%s' has an incompatible order clause", wFnDef.getSpec()));
}
}
use of com.sap.hadoop.windowing.WindowingException in project SQLWindowing by hbutani.
the class WindowFunctionTranslation method setupEvaluator.
static void setupEvaluator(WindowFunctionDef wFnDef) throws WindowingException {
try {
WindowFunctionSpec wSpec = wFnDef.getSpec();
ArrayList<ArgDef> args = wFnDef.getArgs();
ArrayList<ObjectInspector> argOIs = getWritableObjectInspector(args);
GenericUDAFEvaluator wFnEval = org.apache.hadoop.hive.ql.exec.FunctionRegistry.getGenericUDAFEvaluator(wSpec.getName(), argOIs, wSpec.isDistinct(), wSpec.isStar());
ObjectInspector[] funcArgOIs = null;
if (args != null) {
funcArgOIs = new ObjectInspector[args.size()];
int i = 0;
for (ArgDef arg : args) {
funcArgOIs[i++] = arg.getOI();
}
}
ObjectInspector OI = wFnEval.init(GenericUDAFEvaluator.Mode.COMPLETE, funcArgOIs);
wFnDef.setEvaluator(wFnEval);
wFnDef.setOI(OI);
} catch (HiveException he) {
throw new WindowingException(he);
}
}
use of com.sap.hadoop.windowing.WindowingException in project SQLWindowing by hbutani.
the class WindowFunctionTranslation method translateWindowSpec.
public static WindowDef translateWindowSpec(QueryDef qDef, InputInfo iInfo, WindowFunctionSpec wFnSpec) throws WindowingException {
WindowSpec wSpec = wFnSpec.getWindowSpec();
if (wSpec == null)
return null;
WindowFunctionInfo wFnInfo = FunctionRegistry.getWindowFunctionInfo(wFnSpec.getName());
String desc = wFnSpec.toString();
if (wSpec != null && !wFnInfo.isSupportsWindow()) {
throw new WindowingException(sprintf("Function %s doesn't support windowing", desc));
}
return WindowSpecTranslation.translateWindowSpecOnInput(qDef, wSpec, iInfo, desc);
}
Aggregations