use of com.sap.hadoop.windowing.query2.specification.QueryOutputSpec in project SQLWindowing by hbutani.
the class MRUtils method getOutputPath.
public String getOutputPath() {
QueryOutputSpec qOutSpec = qdef.getOutput().getOutputSpec();
outputPath = qOutSpec.getPath();
return outputPath;
}
use of com.sap.hadoop.windowing.query2.specification.QueryOutputSpec in project SQLWindowing by hbutani.
the class OutputTranslation method validateOutputSpec.
public static void validateOutputSpec(QueryDef qDef) throws WindowingException {
QueryTranslationInfo tInfo = qDef.getTranslationInfo();
QueryOutputSpec spec = qDef.getSpec().getOutput();
// ensure outputPath is specified. It is optional in grammar because it is not required in Hive mode.
if (spec == null || spec.getPath() == null) {
throw new WindowingException("Query doesn't contain an output Path for results");
}
// if tableName is specified; validate it exists
Table oTbl = null;
if (spec.getHiveTable() != null) {
oTbl = getHiveTableDetails(tInfo.getHiveCfg(), spec.getHiveTable(), qDef.getInput().getHiveTableSpec());
}
// validate serDeClass
if (spec.getSerDeClass() == null) {
if (oTbl != null && oTbl.getSd().getSerdeInfo().isSetSerializationLib()) {
spec.setSerDeClass(oTbl.getSd().getSerdeInfo().getSerializationLib());
if (oTbl.getSd().getSerdeInfo().isSetParameters()) {
Iterator<Map.Entry<String, String>> props = oTbl.getSd().getSerdeInfo().getParameters().entrySet().iterator();
while (props.hasNext()) {
Map.Entry<String, String> e = props.next();
spec.addSerdeProperty(e.getKey(), e.getValue());
}
}
} else {
spec.setSerDeClass(com.sap.hadoop.windowing.Constants.DEFAULT_SERDE_CLASSNAME);
spec.addSerdeProperty(org.apache.hadoop.hive.serde.Constants.FIELD_DELIM, ",");
}
}
try {
Class.forName(spec.getSerDeClass());
} catch (Throwable t) {
throw new WindowingException(sprintf("Unknown SerDe Class %s", spec.getSerDeClass()), t);
}
// validate outputFormat
if (spec.getOutputFormatClass() == null) {
if (oTbl != null) {
spec.setOutputFormatClass(oTbl.getSd().getOutputFormat());
} else {
spec.setOutputFormatClass(Constants.DEFAULT_OUTPUTFORMAT_CLASSNAME);
}
}
try {
Class.forName(spec.getOutputFormatClass());
} catch (Throwable t) {
throw new WindowingException(sprintf("Unknown OutputFormat Class %s", spec.getOutputFormatClass()), t);
}
// ensure user has not specified a FormatClass
if (spec.getRecordWriterClass() != null) {
throw new WindowingException("Illegal Output Spec: RecordWriter class not valid in MR mode");
}
}
Aggregations