This is an automated email from the ASF dual-hosted git repository.
xudong963 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/datafusion.git
The following commit(s) were added to refs/heads/main by this push:
new b2c210abd9 Improve documentation for `FileSource`, `DataSource` and
`DataSourceExec` (#15766)
b2c210abd9 is described below
commit b2c210abd99b20669f4fddd9c53fd659b531ea82
Author: Andrew Lamb <[email protected]>
AuthorDate: Tue Apr 29 01:07:37 2025 -0400
Improve documentation for `FileSource`, `DataSource` and `DataSourceExec`
(#15766)
* Improve documentation for FileSource
* more
* Update datafusion/datasource/src/file.rs
Co-authored-by: Adrian Garcia Badaracco
<[email protected]>
* Clippy
* fmt
---------
Co-authored-by: Adrian Garcia Badaracco
<[email protected]>
---
datafusion/datasource/src/file.rs | 19 ++++++++++++++-----
datafusion/datasource/src/source.rs | 31 ++++++++++++++++++++++---------
2 files changed, 36 insertions(+), 14 deletions(-)
diff --git a/datafusion/datasource/src/file.rs
b/datafusion/datasource/src/file.rs
index 835285b21e..6bbe9e50d3 100644
--- a/datafusion/datasource/src/file.rs
+++ b/datafusion/datasource/src/file.rs
@@ -37,9 +37,16 @@ use datafusion_physical_plan::DisplayFormatType;
use object_store::ObjectStore;
-/// Common file format behaviors needs to implement.
+/// file format specific behaviors for elements in [`DataSource`]
///
-/// See implementation examples such as `ParquetSource`, `CsvSource`
+/// See more details on specific implementations:
+/// *
[`ArrowSource`](https://docs.rs/datafusion/latest/datafusion/datasource/physical_plan/struct.ArrowSource.html)
+/// *
[`AvroSource`](https://docs.rs/datafusion/latest/datafusion/datasource/physical_plan/struct.AvroSource.html)
+/// *
[`CsvSource`](https://docs.rs/datafusion/latest/datafusion/datasource/physical_plan/struct.CsvSource.html)
+/// *
[`JsonSource`](https://docs.rs/datafusion/latest/datafusion/datasource/physical_plan/struct.JsonSource.html)
+/// *
[`ParquetSource`](https://docs.rs/datafusion/latest/datafusion/datasource/physical_plan/struct.ParquetSource.html)
+///
+/// [`DataSource`]: crate::source::DataSource
pub trait FileSource: Send + Sync {
/// Creates a `dyn FileOpener` based on given parameters
fn create_file_opener(
@@ -69,10 +76,12 @@ pub trait FileSource: Send + Sync {
Ok(())
}
- /// If supported by the [`FileSource`], redistribute files across
partitions according to their size.
- /// Allows custom file formats to implement their own repartitioning logic.
+ /// If supported by the [`FileSource`], redistribute files across
partitions
+ /// according to their size. Allows custom file formats to implement their
+ /// own repartitioning logic.
///
- /// Provides a default repartitioning behavior, see comments on
[`FileGroupPartitioner`] for more detail.
+ /// The default implementation uses [`FileGroupPartitioner`]. See that
+ /// struct for more details.
fn repartitioned(
&self,
target_partitions: usize,
diff --git a/datafusion/datasource/src/source.rs
b/datafusion/datasource/src/source.rs
index 2d6ea1a8b3..6abe3c3298 100644
--- a/datafusion/datasource/src/source.rs
+++ b/datafusion/datasource/src/source.rs
@@ -40,15 +40,26 @@ use datafusion_physical_plan::filter_pushdown::{
FilterPushdownSupport,
};
-/// Common behaviors in Data Sources for both from Files and Memory.
+/// A source of data, typically a list of files or memory
+///
+/// This trait provides common behaviors for abstract sources of data. It has
+/// two common implementations:
+///
+/// 1. [`FileScanConfig`]: lists of files
+/// 2. [`MemorySourceConfig`]: in memory list of `RecordBatch`
+///
+/// File format specific behaviors are defined by [`FileSource`]
///
/// # See Also
-/// * [`DataSourceExec`] for physical plan implementation
-/// * [`FileSource`] for file format implementations (Parquet, Json, etc)
+/// * [`FileSource`] for file format specific implementations (Parquet, Json,
etc)
+/// * [`DataSourceExec`]: The [`ExecutionPlan`] that reads from a `DataSource`
///
/// # Notes
+///
/// Requires `Debug` to assist debugging
///
+/// [`FileScanConfig`]:
https://docs.rs/datafusion/latest/datafusion/datasource/physical_plan/struct.FileScanConfig.html
+/// [`MemorySourceConfig`]:
https://docs.rs/datafusion/latest//datafusion/datasource/memory/struct.MemorySourceConfig.html
/// [`FileSource`]: crate::file::FileSource
pub trait DataSource: Send + Sync + Debug {
fn open(
@@ -94,14 +105,16 @@ pub trait DataSource: Send + Sync + Debug {
}
}
-/// [`ExecutionPlan`] handles different file formats like JSON, CSV, AVRO,
ARROW, PARQUET
+/// [`ExecutionPlan`] that reads one or more files
+///
+/// `DataSourceExec` implements common functionality such as applying
+/// projections, and caching plan properties.
///
-/// `DataSourceExec` implements common functionality such as applying
projections,
-/// and caching plan properties.
+/// The [`DataSource`] describes where to find the data for this data source
+/// (for example in files or what in memory partitions).
///
-/// The [`DataSource`] trait describes where to find the data for this data
-/// source (for example what files or what in memory partitions). Format
-/// specifics are implemented with the [`FileSource`] trait.
+/// For file based [`DataSource`]s, format specific behavior is implemented in
+/// the [`FileSource`] trait.
///
/// [`FileSource`]: crate::file::FileSource
#[derive(Clone, Debug)]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]