dremio InfoSchemaScanCreator 参考调用链
整理一些关于InfoSchemaScanCreator 请求调用链的,方便记录学习
参考调用链信息
- stack com.dremio.exec.store.ischema.InfoSchemaScanCreator create
ts=2022-07-17 14:50:01;thread_name=e5 - 1d2bde65-fbcb-bfda-7af3-7cc83574a800:frag:0:0;id=a0;is_daemon=false;priority=5;TCCL=jdk.internal.loader.ClassLoaders$AppClassLoader@42110406
@com.dremio.exec.store.ischema.InfoSchemaScanCreator.create()
at com.dremio.sabot.driver.OperatorCreatorRegistry.getProducerOperator(OperatorCreatorRegistry.java:102)
at com.dremio.sabot.driver.PipelineCreator$CreatorVisitor.visitSubScan(PipelineCreator.java:224)
at com.dremio.sabot.driver.PipelineCreator$CreatorVisitor.visitSubScan(PipelineCreator.java:117)
at com.dremio.exec.physical.base.AbstractSubScan.accept(AbstractSubScan.java:85)
at com.dremio.sabot.driver.PipelineCreator$CreatorVisitor.visitOp(PipelineCreator.java:274)
at com.dremio.sabot.driver.PipelineCreator$CreatorVisitor.visitOp(PipelineCreator.java:117)
at com.dremio.exec.physical.base.AbstractPhysicalVisitor.visitProject(AbstractPhysicalVisitor.java:84)
at com.dremio.exec.physical.config.Project.accept(Project.java:55)
at com.dremio.sabot.driver.PipelineCreator$CreatorVisitor.visitOp(PipelineCreator.java:274)
at com.dremio.sabot.driver.PipelineCreator$CreatorVisitor.visitOp(PipelineCreator.java:117)
at com.dremio.exec.physical.base.AbstractPhysicalVisitor.visitProject(AbstractPhysicalVisitor.java:84)
at com.dremio.exec.physical.config.Project.accept(Project.java:55)
at com.dremio.sabot.driver.PipelineCreator$CreatorVisitor.visitScreen(PipelineCreator.java:248)
at com.dremio.sabot.driver.PipelineCreator$CreatorVisitor.visitScreen(PipelineCreator.java:117)
at com.dremio.exec.physical.config.Screen.accept(Screen.java:63)
at com.dremio.sabot.driver.PipelineCreator.get(PipelineCreator.java:109)
at com.dremio.sabot.driver.PipelineCreator.get(PipelineCreator.java:103)
at com.dremio.sabot.exec.fragment.FragmentExecutor.setupExecution(FragmentExecutor.java:467)
at com.dremio.sabot.exec.fragment.FragmentExecutor.run(FragmentExecutor.java:327)
at com.dremio.sabot.exec.fragment.FragmentExecutor.access$1600(FragmentExecutor.java:97)
at com.dremio.sabot.exec.fragment.FragmentExecutor$AsyncTaskImpl.run(FragmentExecutor.java:820)
at com.dremio.sabot.task.AsyncTaskWrapper.run(AsyncTaskWrapper.java:120)
at com.dremio.sabot.task.slicing.SlicingThread.mainExecutionLoop(SlicingThread.java:247)
at com.dremio.sabot.task.slicing.SlicingThread.run(SlicingThread.java:171)
- stack com.dremio.sabot.driver.OperatorCreatorRegistry getProducerOperator
ts=2022-07-17 14:46:34;thread_name=e4 - 1d2bdf34-ae39-45e9-d056-5e5fab580800:frag:0:0;id=9f;is_daemon=false;priority=5;TCCL=jdk.internal.loader.ClassLoaders$AppClassLoader@42110406
@com.dremio.sabot.driver.OperatorCreatorRegistry.getProducerOperator()
at com.dremio.sabot.driver.PipelineCreator$CreatorVisitor.visitSubScan(PipelineCreator.java:224)
at com.dremio.sabot.driver.PipelineCreator$CreatorVisitor.visitSubScan(PipelineCreator.java:117)
at com.dremio.exec.physical.base.AbstractSubScan.accept(AbstractSubScan.java:85)
at com.dremio.sabot.driver.PipelineCreator$CreatorVisitor.visitOp(PipelineCreator.java:274)
at com.dremio.sabot.driver.PipelineCreator$CreatorVisitor.visitOp(PipelineCreator.java:117)
at com.dremio.exec.physical.base.AbstractPhysicalVisitor.visitProject(AbstractPhysicalVisitor.java:84)
at com.dremio.exec.physical.config.Project.accept(Project.java:55)
at com.dremio.sabot.driver.PipelineCreator$CreatorVisitor.visitOp(PipelineCreator.java:274)
at com.dremio.sabot.driver.PipelineCreator$CreatorVisitor.visitOp(PipelineCreator.java:117)
at com.dremio.exec.physical.base.AbstractPhysicalVisitor.visitProject(AbstractPhysicalVisitor.java:84)
at com.dremio.exec.physical.config.Project.accept(Project.java:55)
at com.dremio.sabot.driver.PipelineCreator$CreatorVisitor.visitScreen(PipelineCreator.java:248)
at com.dremio.sabot.driver.PipelineCreator$CreatorVisitor.visitScreen(PipelineCreator.java:117)
at com.dremio.exec.physical.config.Screen.accept(Screen.java:63)
at com.dremio.sabot.driver.PipelineCreator.get(PipelineCreator.java:109)
at com.dremio.sabot.driver.PipelineCreator.get(PipelineCreator.java:103)
at com.dremio.sabot.exec.fragment.FragmentExecutor.setupExecution(FragmentExecutor.java:467)
at com.dremio.sabot.exec.fragment.FragmentExecutor.run(FragmentExecutor.java:327)
at com.dremio.sabot.exec.fragment.FragmentExecutor.access$1600(FragmentExecutor.java:97)
at com.dremio.sabot.exec.fragment.FragmentExecutor$AsyncTaskImpl.run(FragmentExecutor.java:820)
at com.dremio.sabot.task.AsyncTaskWrapper.run(AsyncTaskWrapper.java:120)
at com.dremio.sabot.task.slicing.SlicingThread.mainExecutionLoop(SlicingThread.java:247)
at com.dremio.sabot.task.slicing.SlicingThread.run(SlicingThread.java:171)
- watch com.dremio.exec.store.ischema.InfoSchemaScanCreator create '{params, target, returnObj, throwExp}' -x 2
Press Q or Ctrl+C to abort.
Affect(class count: 1 , method count: 2) cost in 260 ms, listenerId: 22
method=com.dremio.exec.store.ischema.InfoSchemaScanCreator.create location=AtExit
ts=2022-07-17 15:00:01; [cost=0.226267ms] result=@ArrayList[
@Object[][
@FragmentExecutionContext[com.dremio.sabot.exec.fragment.FragmentExecutionContext@5c2fb16c],
@OperatorContextImpl[com.dremio.sabot.exec.context.OperatorContextImpl@2eca7bc2],
@InfoSchemaSubScan[com.dremio.exec.store.ischema.InfoSchemaSubScan@28104b33],
],
@InfoSchemaScanCreator[
],
@ScanOperator[
logger=@Logger[Logger[com.dremio.sabot.op.scan.ScanOperator]],
injector=@NoOpControlsInjector[com.dremio.exec.testing.NoOpControlsInjector@6e04f55e],
outgoing=@VectorContainer[com.dremio.exec.record.VectorContainer@51ac732e[recordCount = -1, schema = null, wrappers = [],
fieldVectorMap=@HashMap[isEmpty=true;size=0],
state=@State[NEEDS_SETUP],
context=@OperatorContextImpl[com.dremio.sabot.exec.context.OperatorContextImpl@2eca7bc2],
readers=@[com.dremio.exec.store.parquet.RecordReaderIterator$1@7b4ff3fb],
currentReader=@InformationSchemaRecordReader[com.dremio.exec.store.ischema.InformationSchemaRecordReader@5a4a892f[columns = [`TABLE_CATALOG`, `TABLE_SCHEMA`, `TABLE_NAME`, `TABLE_TYPE`], isStarQuery = false, isSkipQuery = false]],
mutator=@ScanMutator[com.dremio.sabot.op.scan.ScanOperator$ScanMutator@27a3edcf],
callBack=@MutatorSchemaChangeCallBack[com.dremio.sabot.op.scan.MutatorSchemaChangeCallBack@1524df16],
schema=@BatchSchema[schema(TABLE_CATALOG::varchar, TABLE_SCHEMA::varchar, TABLE_NAME::varchar, TABLE_TYPE::varchar)],
selectedColumns=@RegularImmutableList[isEmpty=false;size=4],
tableSchemaPath=@ArrayList[isEmpty=false;size=2],
config=@InfoSchemaSubScan[com.dremio.exec.store.ischema.InfoSchemaSubScan@28104b33],
globalDictionaries=null,
peerJoinFragmentMap=@HashMap[isEmpty=true;size=0],
peerJoinFilterMap=@HashMap[isEmpty=true;size=0],
readTime=@Stopwatch[0.000 ns],
columnsToBoost=@HashSet[isEmpty=true;size=0],
foremanEndpoint=null,
queryContextInfo=null,
runtimeFilters=@ArrayList[isEmpty=true;size=0],
],
null,
]
method=com.dremio.exec.store.ischema.InfoSchemaScanCreator.create location=AtExit
ts=2022-07-17 15:00:01; [cost=2.037962ms] result=@ArrayList[
@Object[][
@FragmentExecutionContext[com.dremio.sabot.exec.fragment.FragmentExecutionContext@5c2fb16c],
@OperatorContextImpl[com.dremio.sabot.exec.context.OperatorContextImpl@2eca7bc2],
@InfoSchemaSubScan[com.dremio.exec.store.ischema.InfoSchemaSubScan@28104b33],
],
@InfoSchemaScanCreator[
],
@ScanOperator[
logger=@Logger[Logger[com.dremio.sabot.op.scan.ScanOperator]],
injector=@NoOpControlsInjector[com.dremio.exec.testing.NoOpControlsInjector@6e04f55e],
outgoing=@VectorContainer[com.dremio.exec.record.VectorContainer@51ac732e[recordCount = -1, schema = null, wrappers = [],
fieldVectorMap=@HashMap[isEmpty=true;size=0],
state=@State[NEEDS_SETUP],
context=@OperatorContextImpl[com.dremio.sabot.exec.context.OperatorContextImpl@2eca7bc2],
readers=@[com.dremio.exec.store.parquet.RecordReaderIterator$1@7b4ff3fb],
currentReader=@InformationSchemaRecordReader[com.dremio.exec.store.ischema.InformationSchemaRecordReader@5a4a892f[columns = [`TABLE_CATALOG`, `TABLE_SCHEMA`, `TABLE_NAME`, `TABLE_TYPE`], isStarQuery = false, isSkipQuery = false]],
mutator=@ScanMutator[com.dremio.sabot.op.scan.ScanOperator$ScanMutator@27a3edcf],
callBack=@MutatorSchemaChangeCallBack[com.dremio.sabot.op.scan.MutatorSchemaChangeCallBack@1524df16],
schema=@BatchSchema[schema(TABLE_CATALOG::varchar, TABLE_SCHEMA::varchar, TABLE_NAME::varchar, TABLE_TYPE::varchar)],
selectedColumns=@RegularImmutableList[isEmpty=false;size=4],
tableSchemaPath=@ArrayList[isEmpty=false;size=2],
config=@InfoSchemaSubScan[com.dremio.exec.store.ischema.InfoSchemaSubScan@28104b33],
globalDictionaries=null,
peerJoinFragmentMap=@HashMap[isEmpty=true;size=0],
peerJoinFilterMap=@HashMap[isEmpty=true;size=0],
readTime=@Stopwatch[0.000 ns],
columnsToBoost=@HashSet[isEmpty=true;size=0],
foremanEndpoint=null,
queryContextInfo=null,
runtimeFilters=@ArrayList[isEmpty=true;size=0],
],
null,
]
参考资料
sabot/kernel/src/main/java/com/dremio/exec/store/ischema/InfoSchemaScanCreator.java
sabot/kernel/src/main/java/com/dremio/sabot/op/spi/ProducerOperator.java
sabot/kernel/src/main/java/com/dremio/sabot/driver/OperatorCreatorRegistry.java
sabot/kernel/src/main/java/com/dremio/sabot/driver/StraightPipe.java