-
Notifications
You must be signed in to change notification settings - Fork 1.5k
No suitable object store found for *** #2136
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Do you modify the Ballista source code and try to register s3-objectstore ? |
I think the correct logic is: use the code "sessionContext.runtime_env().register_object_store("s3",Arc::new(S3FileSystem{}));" to register the objectstore, Scheduler and Executor to obtain the serialized s3-objectstore through the network , instead of writing the code for registering s3-objectstore in both Scheduler and Executor. If you do that, the parameters of the objectstore also need to be passed over the network. @mingmwang |
Yes, ideally the objectstore just need to be registered once. But currently since there is no general serialization API for the |
What is the correct way? Even if the method of registering objectstore is written in Scheduler and Executor, how should I pass parameters to Scheduler and Executor? For example: endpoint, username, password.Will the author team improve this part of the code? @mingmwang |
Hi @ZhangqyTJ, my perspective for the object store for a standalone system is that we should leverage the ObjectStoreRegistry as a system-level one rather than the session-level one currently implemented. And we should not do the manually registration for object stores. Instead, we should register them by default. Therefore, we proposed #2111 to introduce object stores as optional features in the datafusion core. For HDFS as an example, the detailed implementation will load related configurations from configuration files under specific locations, which may also work for s3. For example, to put and load your configurations from ~/.datafusion/object_stores/s3.json. @matthewmturner In the future, we should refine the current implementation from the following aspects:
|
Hi @ZhangqyTJ as @yahoNanJing mentioned, the current implementation assumes that the |
ok |
I found this issue when trying to add s3-objectstore:
I use the
ctx.runtime_env().register_object_store()
method to register the objectstore into the SessionContext, but I can't get the objectstore throughget_by_uri()
in the Scheduler.Exception: No suitable object store found for ***
This exception can be reproduced using LocalFileSystem.
Reproduced method: ObjectStoreRegistry does not store LocalFileSystem when it is created, and registers LocalFileSystem in ObjectStoreRegistry.object_stores through the register_object_store() method. Run tpch-benchmark-ballista, the path parameter format is
file://***/***
step
map.insert(LOCAL_SCHEME.to_string(), Arc::new(LocalFileSystem));
"ctx.runtime_env().register_object_store("file",Arc::new(LocalFileSystem{}));
" in line 245 underThe exception is thrown as:
[2022-04-02T05:45:26Z ERROR ballista_scheduler::scheduler_server::grpc] Could not parse logical plan protobuf: Not implemented: No object store is registered for path file://E:/datafusion/lineitem.tbl: Internal ("No suitable object store found for file")
The text was updated successfully, but these errors were encountered: