pub struct RuntimeEnv {
pub memory_pool: Arc<dyn MemoryPool>,
pub disk_manager: Arc<DiskManager>,
pub cache_manager: Arc<CacheManager>,
pub object_store_registry: Arc<dyn ObjectStoreRegistry>,
}
Expand description
Execution runtime environment that manages system resources such as memory, disk, cache and storage.
A RuntimeEnv
is created from a RuntimeEnvBuilder
and has the
following resource management functionality:
MemoryPool
: Manage memoryDiskManager
: Manage temporary files on local diskCacheManager
: Manage temporary cache data during the session lifetimeObjectStoreRegistry
: Manage mapping URLs to object store instances
Fields§
§memory_pool: Arc<dyn MemoryPool>
Runtime memory management
disk_manager: Arc<DiskManager>
Manage temporary files during query execution
cache_manager: Arc<CacheManager>
Manage temporary cache during query execution
object_store_registry: Arc<dyn ObjectStoreRegistry>
Object Store Registry
Implementations§
Source§impl RuntimeEnv
impl RuntimeEnv
pub fn new(config: RuntimeConfig) -> Result<Self>
try_new
insteadSourcepub fn try_new(config: RuntimeConfig) -> Result<Self>
pub fn try_new(config: RuntimeConfig) -> Result<Self>
Create env based on configuration
Sourcepub fn register_object_store(
&self,
url: &Url,
object_store: Arc<dyn ObjectStore>,
) -> Option<Arc<dyn ObjectStore>>
pub fn register_object_store( &self, url: &Url, object_store: Arc<dyn ObjectStore>, ) -> Option<Arc<dyn ObjectStore>>
Registers a custom ObjectStore
to be used with a specific url.
This allows DataFusion to create external tables from urls that do not have
built in support such as hdfs://namenode:port/...
.
Returns the ObjectStore
previously registered for this
scheme, if any.
See ObjectStoreRegistry
for more details
§Example: Register local file system object store
let url = Url::try_from("file://").unwrap();
let object_store = object_store::local::LocalFileSystem::new();
// register the object store with the runtime environment
runtime_env.register_object_store(&url, Arc::new(object_store));
§Example: Register local file system object store
To register reading from urls such as https://github.com`
// create a new object store via object_store::http::HttpBuilder;
let base_url = Url::parse("https://github.com").unwrap();
// let http_store = HttpBuilder::new()
// .with_url(base_url.clone())
// .build()
// .unwrap();
// register the object store with the runtime environment
runtime_env.register_object_store(&base_url, Arc::new(http_store));
Sourcepub fn object_store(&self, url: impl AsRef<Url>) -> Result<Arc<dyn ObjectStore>>
pub fn object_store(&self, url: impl AsRef<Url>) -> Result<Arc<dyn ObjectStore>>
Retrieves a ObjectStore
instance for a url by consulting the
registry. See ObjectStoreRegistry::get_store
for more
details.
Trait Implementations§
Source§impl Clone for RuntimeEnv
impl Clone for RuntimeEnv
Source§fn clone(&self) -> RuntimeEnv
fn clone(&self) -> RuntimeEnv
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for RuntimeEnv
impl Debug for RuntimeEnv
Auto Trait Implementations§
impl Freeze for RuntimeEnv
impl !RefUnwindSafe for RuntimeEnv
impl Send for RuntimeEnv
impl Sync for RuntimeEnv
impl Unpin for RuntimeEnv
impl !UnwindSafe for RuntimeEnv
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more