1
1
use std:: sync:: Arc ;
2
2
3
3
use deltalake_core:: logstore:: {
4
- default_logstore, logstore_factories, DeltaIOStorageBackend , LogStore , LogStoreFactory ,
5
- StorageConfig ,
4
+ default_logstore, logstore_factories, LogStore , LogStoreFactory , StorageConfig ,
6
5
} ;
7
6
use deltalake_core:: logstore:: { object_store_factories, ObjectStoreFactory , ObjectStoreRef } ;
8
7
use deltalake_core:: { DeltaResult , Path } ;
9
- use hdfs_native_object_store:: HdfsObjectStore ;
8
+ use hdfs_native_object_store:: HdfsObjectStoreBuilder ;
10
9
use url:: Url ;
11
10
12
11
#[ derive( Clone , Default , Debug ) ]
@@ -18,15 +17,16 @@ impl ObjectStoreFactory for HdfsFactory {
18
17
url : & Url ,
19
18
config : & StorageConfig ,
20
19
) -> DeltaResult < ( ObjectStoreRef , Path ) > {
21
- let mut store: ObjectStoreRef = Arc :: new ( HdfsObjectStore :: with_config (
22
- url. as_str ( ) ,
23
- config. raw . clone ( ) ,
24
- ) ?) ;
20
+ let mut builder = HdfsObjectStoreBuilder :: new ( )
21
+ . with_url ( url. as_str ( ) )
22
+ . with_config ( & config. raw ) ;
25
23
26
- // HDFS doesn't have the spawnService, so we still wrap it in the old io storage backend (not as optimal though)
27
24
if let Some ( runtime) = & config. runtime {
28
- store = Arc :: new ( DeltaIOStorageBackend :: new ( store, runtime. clone ( ) ) ) ;
29
- } ;
25
+ builder = builder. with_io_runtime ( runtime. get_handle ( ) ) ;
26
+ }
27
+
28
+ let store = Arc :: new ( builder. build ( ) ?) ;
29
+
30
30
let prefix = Path :: parse ( url. path ( ) ) ?;
31
31
Ok ( ( store, prefix) )
32
32
}
0 commit comments