DistributedResourcePool (expanded view)
SparkInterpreter
RemoteInterpreterServer
DistributedResourcePool
RemoteInterpreterEventClient
(ResourcePoolConnector)
LocalResource1
RemoteResource1
(for JDBC)
RemoteResource2
(for ...)
Spark Cluster
Spark Cluster
Spark Cluster
ZeppelinResourcePoolDataSource
use zeppelin's distributed resource pool as spark data source
SparkInterpreter can put `SparkTableData` into the resource pool
LocalResource 1
LocalResource 1
LocalResource 1
Resource N
LocalResource 1
LocalResource 1
LocalResource 1
InterpreterResultTableData
local resources
(created in this interpreter)
LocalResource 1
LocalResource 1
LocalResource 1
SparkTableData N
LocalResource 1
LocalResource 1
LocalResource 1
RemoteResource N
remote resources
(created from other interpreters)
Spark Cluster
Table C
Table C
Table C
RDD N
Some interpreters might not be connected with a storage
(e.g shell interpreter)
In this case, they might persist `TableData` in memory directly
LocalResource 1
LocalResource 1
LocalResource 1
SparkSQLTableData N
Depending on implementation,
`TableData` might keep the query only
to reproduce the table result,
but not to affect on the external storage
SparkInterpreter can use `TableData` instances
created from other interpreters using
remote method invocation such as
`rows()`, `columns()`