private void prepareUDFResources() throws StartupException {
    long startTime = System.currentTimeMillis();
    initUDFRelatedInstance();
    if (resourcesInformationHolder.getUDFInformationList() == null
        || resourcesInformationHolder.getUDFInformationList().isEmpty()) {
      return;
    }

    // Get jars from config node
    List<UDFInformation> udfNeedJarList = getJarListForUDF();
    int index = 0;
    while (index < udfNeedJarList.size()) {
      List<UDFInformation> curList = new ArrayList<>();
      int offset = 0;
      while (offset < ResourcesInformationHolder.getJarNumOfOneRpc()
          && index + offset < udfNeedJarList.size()) {
        curList.add(udfNeedJarList.get(index + offset));
        offset++;
      }
      index += (offset + 1);
      getJarOfUDFs(curList);
    }

    // Create instances of udf and do registration
    try {
      for (UDFInformation udfInformation : resourcesInformationHolder.getUDFInformationList()) {
        if (udfInformation.isAvailable()) {
          Model model = UDFManagementService.getInstance().checkAndGetModel(udfInformation);
          UDFManagementService.getInstance().doRegister(model, udfInformation);
        }
      }
    } catch (Exception e) {
      throw new StartupException(e);
    }
    long endTime = System.currentTimeMillis();
    logger.debug("successfully registered all the UDFs, which takes {} ms.", (endTime - startTime));
    if (logger.isDebugEnabled()) {
      for (UDFInformation udfInformation :
          UDFManagementService.getInstance().getUDFInformation(Model.TREE)) {
        logger.debug("get tree udf: {}", udfInformation.getFunctionName());
      }
      for (UDFInformation udfInformation :
          UDFManagementService.getInstance().getUDFInformation(Model.TABLE)) {
        logger.debug("get table udf: {}", udfInformation.getFunctionName());
      }
    }
  }
Generate dataNodeConfiguration. Warning: Don't private this method !!!

@return TDataNodeConfiguration
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/DataNode.java