DispachManager.createQuery
createQueryInternal
queryPreparer.prepareQuery[Statement,List,formattedQuery]
sqlParser.createStatement
getQueryType[DELETE,DESCRIBE,EXPLAIN,ANALYZE,INSERT,SELECT,DATA_DEFINITION]
DispatchQueryFactory.createDispatchQuery
new LocalDispatchQuery
queryExecutionFuture
QueryManager.createQuery(QueryExecution queryExecution)
embedVersion.embedVersion
quieryExecution.start()
analyzeQuery
doAnalyzeQuery
logicalPlanner.plan
metadata.beginQuery
registerCatalogForQueryId
planDistribution
SqlQuerySchedulerInterface(SqlQueryScheduler).start()
SqlQueryScheduler.startScheduling()
executor.submit(this::schedule) -> schedule()
getSectionsReadyForExecution
forTree(StreamingPlanSection::getChildren).depthFirstPreOrder(sectionedPlan)
isReadyForExecution(StreamingPlanSection section)
getLastestSectionExecution
createStageExecutions
initial outputBuffers
initial locationsConsumer
getBufferLocation-> Map<URI,TaskId>
URI location = RemoteTask.getTaskStatus.getSelf
queryStateMachine.updateOutputLocations(bufferLocations,noMoreExchangeLocations)
SectionExecutionFactory.createSectionExecutions
createStreamingLinkedStageExecutions
section.getPlan().withBucketToPartition(bucketToPartition)
nodePartitioningManager.getNodePartitioningMap(session, handle)
createSqlStageExecution
create childStageExecutions
SqlStageExcution.addExchangeLocations
get new splits
createRemoteSplitFor(nowTaskId,newTask.getRemoteTaskLocation,newTask.getTaskId)
new Split()
task.addSplits(newSplits)
updateTaskStates
getTaskStatus()
nodeStatsTracker.setPartitionedSplitCount
nodeStatsTracker.setMemoryUsage
nodeStatsTracker.setCupUsage
updateSplitQueueSpace
scheduleUpdate
create SstageLinkage
create childOutputBufferManagers
createStageScheduler
create splitSources
create nodeSelector
create placementPolicy
create StageScheduler
build stageExecutionAndSchedulers
executionSchedules::add
get scheduleResult : executionAndScheduler.getStageScheduler.schedule()
SqlStageExecution.scheduleTask
task.start
HttpRemoteTask.scheduleUpdate
sendUpdate
getHttpUriBuilder
create request
httpClient.executeAsync
executionAndScheduler.getStageLinkage().processScheduleResults(executionAndScheduler.getStageExecution().getState(),scheduleResult.getNewTasks())
locationConsumer.addExchangeLocations
partialResultQueryTaskTracker.completeTaskScheduling
Presto源码整理 --提交与调度侧
最新推荐文章于 2024-05-05 05:21:46 发布