本文整理汇总了Java中org.apache.drill.exec.expr.DrillFunc类的典型用法代码示例。如果您正苦于以下问题:Java DrillFunc类的具体用法?Java DrillFunc怎么用?Java DrillFunc使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
DrillFunc类属于org.apache.drill.exec.expr包,在下文中一共展示了DrillFunc类的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: DrillFunctionRegistry
import org.apache.drill.exec.expr.DrillFunc; //导入依赖的package包/类
public DrillFunctionRegistry(DrillConfig config) {
FunctionConverter converter = new FunctionConverter();
Set<Class<? extends DrillFunc>> providerClasses = PathScanner.scanForImplementations(DrillFunc.class, config.getStringList(ExecConstants.FUNCTION_PACKAGES));
for (Class<? extends DrillFunc> clazz : providerClasses) {
DrillFuncHolder holder = converter.getHolder(clazz);
if (holder != null) {
// register handle for each name the function can be referred to
String[] names = holder.getRegisteredNames();
// Create the string for input types
String functionInput = "";
for (DrillFuncHolder.ValueReference ref : holder.parameters) {
functionInput += ref.getType().toString();
}
for (String name : names) {
String functionName = name.toLowerCase();
methods.put(functionName, holder);
String functionSignature = functionName + functionInput;
String existingImplementation;
if ((existingImplementation = functionSignatureMap.get(functionSignature)) != null) {
throw new AssertionError(String.format("Conflicting functions with similar signature found. Func Name: %s, Class name: %s " +
" Class name: %s", functionName, clazz.getName(), existingImplementation));
} else if (holder.isAggregating() && holder.isRandom() ) {
logger.warn("Aggregate functions cannot be random, did not register function {}", clazz.getName());
} else {
functionSignatureMap.put(functionSignature, clazz.getName());
}
}
} else {
logger.warn("Unable to initialize function for class {}", clazz.getName());
}
}
if (logger.isTraceEnabled()) {
StringBuilder allFunctions = new StringBuilder();
for (DrillFuncHolder method: methods.values()) {
allFunctions.append(method.toString()).append("\n");
}
logger.trace("Registered functions: [\n{}]", allFunctions);
}
}