From f3cdf6b54bc71629272a3cdcd1ad147da682e1f7 Mon Sep 17 00:00:00 2001 From: Dan Harris <1327726+thinkharderdev@users.noreply.github.com> Date: Fri, 16 Sep 2022 14:37:12 -0400 Subject: [PATCH] Make FileStream and FileOpener public (#3514) --- datafusion/core/src/physical_plan/file_format/file_stream.rs | 5 +++++ datafusion/core/src/physical_plan/file_format/mod.rs | 1 + 2 files changed, 6 insertions(+) diff --git a/datafusion/core/src/physical_plan/file_format/file_stream.rs b/datafusion/core/src/physical_plan/file_format/file_stream.rs index 1a54d685228c..609e3b3a9b20 100644 --- a/datafusion/core/src/physical_plan/file_format/file_stream.rs +++ b/datafusion/core/src/physical_plan/file_format/file_stream.rs @@ -51,7 +51,11 @@ use crate::physical_plan::RecordBatchStream; pub type FileOpenFuture = BoxFuture<'static, Result>>>; +/// Generic API for opening a file using an [`ObjectStore`] and resolving to a +/// stream of [`RecordBatch`] pub trait FileOpener: Unpin { + /// Asynchronously open the specified file and return a stream + /// of [`RecordBatch`] fn open( &self, store: Arc, @@ -167,6 +171,7 @@ impl FileStreamMetrics { } impl FileStream { + /// Create a new `FileStream` using the give `FileOpener` to scan underlying files pub fn new( config: &FileScanConfig, partition: usize, diff --git a/datafusion/core/src/physical_plan/file_format/mod.rs b/datafusion/core/src/physical_plan/file_format/mod.rs index b2fb5b0275df..5a7406dbb634 100644 --- a/datafusion/core/src/physical_plan/file_format/mod.rs +++ b/datafusion/core/src/physical_plan/file_format/mod.rs @@ -41,6 +41,7 @@ use arrow::{ record_batch::RecordBatch, }; pub use avro::AvroExec; +pub use file_stream::{FileOpenFuture, FileOpener, FileStream}; pub(crate) use json::plan_to_json; pub use json::NdJsonExec;