pub struct CsvSource { /* private fields */ }Expand description
A Config for CsvOpener
§Example: create a DataSourceExec for CSV
let options = CsvOptions {
has_header: Some(true),
delimiter: b',',
quote: b'"',
newlines_in_values: Some(true), // The file contains newlines in values
..Default::default()
};
let source = Arc::new(CsvSource::new(file_schema.clone())
.with_csv_options(options)
.with_terminator(Some(b'#'))
);
// Create a DataSourceExec for reading the first 100MB of `file1.csv`
let config = FileScanConfigBuilder::new(object_store_url, source)
.with_file(PartitionedFile::new("file1.csv", 100*1024*1024))
.build();
let exec = (DataSourceExec::from_data_source(config));Implementations§
Source§impl CsvSource
impl CsvSource
Sourcepub fn new(table_schema: impl Into<TableSchema>) -> Self
pub fn new(table_schema: impl Into<TableSchema>) -> Self
Returns a CsvSource
Sourcepub fn with_csv_options(self, options: CsvOptions) -> Self
pub fn with_csv_options(self, options: CsvOptions) -> Self
Sets the CSV options
Sourcepub fn has_header(&self) -> bool
pub fn has_header(&self) -> bool
true if the first line of each file is a header
pub fn truncate_rows(&self) -> bool
Sourcepub fn terminator(&self) -> Option<u8>
pub fn terminator(&self) -> Option<u8>
The line terminator
Sourcepub fn with_escape(&self, escape: Option<u8>) -> Self
pub fn with_escape(&self, escape: Option<u8>) -> Self
Initialize a CsvSource with escape
Sourcepub fn with_terminator(&self, terminator: Option<u8>) -> Self
pub fn with_terminator(&self, terminator: Option<u8>) -> Self
Initialize a CsvSource with terminator
Sourcepub fn with_comment(&self, comment: Option<u8>) -> Self
pub fn with_comment(&self, comment: Option<u8>) -> Self
Initialize a CsvSource with comment
Sourcepub fn with_truncate_rows(&self, truncate_rows: bool) -> Self
pub fn with_truncate_rows(&self, truncate_rows: bool) -> Self
Whether to support truncate rows when read csv file
Sourcepub fn newlines_in_values(&self) -> bool
pub fn newlines_in_values(&self) -> bool
Whether values may contain newline characters
Source§impl CsvSource
impl CsvSource
Sourcepub fn try_from_proto(
node: &PhysicalPlanNode,
ctx: &ExecutionPlanDecodeCtx<'_>,
) -> Result<Arc<dyn ExecutionPlan>>
pub fn try_from_proto( node: &PhysicalPlanNode, ctx: &ExecutionPlanDecodeCtx<'_>, ) -> Result<Arc<dyn ExecutionPlan>>
Reconstructs a DataSourceExec from a protobuf CsvScan.
Custom line terminators are not represented in the wire format.
Trait Implementations§
Source§impl FileSource for CsvSource
impl FileSource for CsvSource
Source§fn try_to_proto(
&self,
base: &FileScanConfig,
ctx: &ExecutionPlanEncodeCtx<'_>,
) -> Result<Option<PhysicalPlanNode>>
fn try_to_proto( &self, base: &FileScanConfig, ctx: &ExecutionPlanEncodeCtx<'_>, ) -> Result<Option<PhysicalPlanNode>>
Emit a CsvScan node wrapping the shared base config and CSV options.
Source§fn create_file_opener(
&self,
object_store: Arc<dyn ObjectStore>,
base_config: &FileScanConfig,
partition_index: usize,
) -> Result<Arc<dyn FileOpener>>
fn create_file_opener( &self, object_store: Arc<dyn ObjectStore>, base_config: &FileScanConfig, partition_index: usize, ) -> Result<Arc<dyn FileOpener>>
dyn FileOpener based on given parameters. Read moreSource§fn table_schema(&self) -> &TableSchema
fn table_schema(&self) -> &TableSchema
Source§fn with_batch_size(&self, batch_size: usize) -> Arc<dyn FileSource> ⓘ
fn with_batch_size(&self, batch_size: usize) -> Arc<dyn FileSource> ⓘ
Source§fn try_pushdown_projection(
&self,
projection: &ProjectionExprs,
) -> Result<Option<Arc<dyn FileSource>>>
fn try_pushdown_projection( &self, projection: &ProjectionExprs, ) -> Result<Option<Arc<dyn FileSource>>>
Source§fn projection(&self) -> Option<&ProjectionExprs>
fn projection(&self) -> Option<&ProjectionExprs>
Self::table_schema. Read moreSource§fn metrics(&self) -> &ExecutionPlanMetricsSet
fn metrics(&self) -> &ExecutionPlanMetricsSet
Source§fn file_type(&self) -> &str
fn file_type(&self) -> &str
Source§fn supports_repartitioning(&self) -> bool
fn supports_repartitioning(&self) -> bool
Source§fn fmt_extra(&self, t: DisplayFormatType, f: &mut Formatter<'_>) -> Result
fn fmt_extra(&self, t: DisplayFormatType, f: &mut Formatter<'_>) -> Result
Source§fn apply_expressions(
&self,
f: &mut dyn FnMut(&Arc<dyn PhysicalExpr>) -> Result<TreeNodeRecursion>,
) -> Result<TreeNodeRecursion>
fn apply_expressions( &self, f: &mut dyn FnMut(&Arc<dyn PhysicalExpr>) -> Result<TreeNodeRecursion>, ) -> Result<TreeNodeRecursion>
Source§fn create_morselizer(
&self,
object_store: Arc<dyn ObjectStore>,
base_config: &FileScanConfig,
partition: usize,
) -> Result<Box<dyn Morselizer>, DataFusionError>
fn create_morselizer( &self, object_store: Arc<dyn ObjectStore>, base_config: &FileScanConfig, partition: usize, ) -> Result<Box<dyn Morselizer>, DataFusionError>
dyn Morselizer based on given parameters. Read moreSource§fn filter(&self) -> Option<Arc<dyn PhysicalExpr>>
fn filter(&self) -> Option<Arc<dyn PhysicalExpr>>
Source§fn repartitioned(
&self,
target_partitions: usize,
repartition_file_min_size: usize,
output_ordering: Option<LexOrdering>,
config: &FileScanConfig,
) -> Result<Option<FileScanConfig>, DataFusionError>
fn repartitioned( &self, target_partitions: usize, repartition_file_min_size: usize, output_ordering: Option<LexOrdering>, config: &FileScanConfig, ) -> Result<Option<FileScanConfig>, DataFusionError>
FileSource, redistribute files across partitions
according to their size. Allows custom file formats to implement their
own repartitioning logic. Read moreSource§fn try_pushdown_filters(
&self,
filters: Vec<Arc<dyn PhysicalExpr>>,
_config: &ConfigOptions,
) -> Result<FilterPushdownPropagation<Arc<dyn FileSource>>, DataFusionError>
fn try_pushdown_filters( &self, filters: Vec<Arc<dyn PhysicalExpr>>, _config: &ConfigOptions, ) -> Result<FilterPushdownPropagation<Arc<dyn FileSource>>, DataFusionError>
Source§fn try_pushdown_sort(
&self,
order: &[PhysicalSortExpr],
eq_properties: &EquivalenceProperties,
) -> Result<SortOrderPushdownResult<Arc<dyn FileSource>>, DataFusionError>
fn try_pushdown_sort( &self, order: &[PhysicalSortExpr], eq_properties: &EquivalenceProperties, ) -> Result<SortOrderPushdownResult<Arc<dyn FileSource>>, DataFusionError>
Source§fn try_reverse_output(
&self,
_order: &[PhysicalSortExpr],
_eq_properties: &EquivalenceProperties,
) -> Result<SortOrderPushdownResult<Arc<dyn FileSource>>, DataFusionError>
fn try_reverse_output( &self, _order: &[PhysicalSortExpr], _eq_properties: &EquivalenceProperties, ) -> Result<SortOrderPushdownResult<Arc<dyn FileSource>>, DataFusionError>
Renamed to try_pushdown_sort. This method was never limited to reversing output. It will be removed in 59.0.0 or later.
Self::try_pushdown_sort.Source§fn reorder_files(&self, files: Vec<PartitionedFile>) -> Vec<PartitionedFile>
fn reorder_files(&self, files: Vec<PartitionedFile>) -> Vec<PartitionedFile>
Source§fn with_schema_adapter_factory(
&self,
_factory: Arc<dyn SchemaAdapterFactory>,
) -> Result<Arc<dyn FileSource>, DataFusionError>
fn with_schema_adapter_factory( &self, _factory: Arc<dyn SchemaAdapterFactory>, ) -> Result<Arc<dyn FileSource>, DataFusionError>
SchemaAdapterFactory has been removed. Use PhysicalExprAdapterFactory instead. See upgrading.md for more details.
Source§fn schema_adapter_factory(&self) -> Option<Arc<dyn SchemaAdapterFactory>>
fn schema_adapter_factory(&self) -> Option<Arc<dyn SchemaAdapterFactory>>
SchemaAdapterFactory has been removed. Use PhysicalExprAdapterFactory instead. See upgrading.md for more details.
Auto Trait Implementations§
impl !RefUnwindSafe for CsvSource
impl !UnwindSafe for CsvSource
impl Freeze for CsvSource
impl Send for CsvSource
impl Sync for CsvSource
impl Unpin for CsvSource
impl UnsafeUnpin for CsvSource
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§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