当前位置: 首页>>代码示例>>Java>>正文


Java DrillFunc类代码示例

本文整理汇总了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);
  }
}
 
开发者ID:skhalifa,项目名称:QDrill,代码行数:42,代码来源:DrillFunctionRegistry.java


注:本文中的org.apache.drill.exec.expr.DrillFunc类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。