Flink SQL
Contents
Table
- tableEnv: TableEnvironment
- logicalPlan: LogicalNode
- tableSchema
- tableName
TableEnvironment
LogicalNode
- relNode
- output
Logic
planner.parse(query)
- val parser: SqlParser = SqlParser.create(sql, parserConfig)
- val sqlNode: SqlNode = parser.parseStmt
- SQLNode
- operator: e.g Union All
- operands: 两个语句
val validated = planner.validate(parsed)
val relational = planner.rel(validated)// transform to a relational tree
- sqlToRelConverter.convertQuery(validatedSqlNode, false, true)
DataStreamCalc
translateToPlan
- 第一个transformation
val inputDataStream = getInput.asInstanceOf[DataStreamRel].translateToPlan(tableEnv, queryConfig)
- 第二个transformation
inputDataStream.process(processFunc) .name(calcOpName(calcProgram, getExpressionString)) // keep parallelism to ensure order of accumulate and retract messages .setParallelism(inputParallelism)
第一个transformation
第二个transformation
- 第一个transformation