/** * Create the instance of TranslatorContext * @param streamAppDesc Samza's streamAppDesc that is populated during the translation. * @param relRoot Root of the relational graph from calcite. * @param executionContext the execution context */ public TranslatorContext(StreamApplicationDescriptor streamAppDesc, RelRoot relRoot, SamzaSqlExecutionContext executionContext) { this.streamAppDesc = streamAppDesc; this.compiler = createExpressionCompiler(relRoot); this.executionContext = executionContext; this.dataContext = new DataContextImpl(); this.relSamzaConverters = executionContext.getSamzaSqlApplicationConfig().getSamzaRelConverters(); this.relTableKeyConverters = executionContext.getSamzaSqlApplicationConfig().getSamzaRelTableKeyConverters(); this.messageStreams = new HashMap<>(); this.relNodes = new HashMap<>(); this.systemDescriptors = new HashMap<>(); }
final RelNode node = relRoot.project(); ScanTranslator scanTranslator = new ScanTranslator(sqlConfig.getSamzaRelConverters(), sqlConfig.getInputSystemStreamConfigBySource(), queryId);
Map<String, SamzaRelConverter> converters = sqlConfig.getSamzaRelConverters(); for (RelRoot relRoot : relRoots) { LOG.info("Translating relRoot {} to samza stream graph", relRoot);
final RelNode node = relRoot.project(); ScanTranslator scanTranslator = new ScanTranslator(sqlConfig.getSamzaRelConverters(), sqlConfig.getInputSystemStreamConfigBySource(), queryId); ModifyTranslator modifyTranslator = new ModifyTranslator(sqlConfig.getSamzaRelConverters(), sqlConfig.getOutputSystemStreamConfigsBySource(), queryId);
/** * For unit testing only */ @VisibleForTesting public void translate(SamzaSqlQueryParser.QueryInfo queryInfo, StreamApplicationDescriptor appDesc) { QueryPlanner planner = new QueryPlanner(sqlConfig.getRelSchemaProviders(), sqlConfig.getSystemStreamConfigsBySource(), sqlConfig.getUdfMetadata()); final RelRoot relRoot = planner.plan(queryInfo.getSql()); int queryId = 1; SamzaSqlExecutionContext executionContext = new SamzaSqlExecutionContext(sqlConfig); Map<String, SamzaRelConverter> converters = sqlConfig.getSamzaRelConverters(); TranslatorContext translatorContext = new TranslatorContext(appDesc, relRoot, executionContext, converters); translate(relRoot, translatorContext, queryId); Map<Integer, TranslatorContext> translatorContexts = new HashMap<>(); translatorContexts.put(queryId, translatorContext.clone()); appDesc.withApplicationTaskContextFactory((jobContext, containerContext, taskContext, applicationContainerContext) -> new SamzaSqlApplicationContext(translatorContexts)); }