Path: blob/main/crates/polars-stream/src/nodes/io_sources/ndjson/chunk_reader.rs
6939 views
use polars_core::schema::SchemaRef;1use polars_error::PolarsResult;2use polars_io::ndjson;3use polars_io::prelude::parse_ndjson;4use polars_plan::dsl::NDJsonReadOptions;56use crate::nodes::compute_node_prelude::*;78/// NDJSON chunk reader.9#[derive(Default)]10pub(super) struct ChunkReader {11projected_schema: SchemaRef,12ignore_errors: bool,13}1415impl ChunkReader {16pub(super) fn try_new(17options: &NDJsonReadOptions,18projected_schema: &SchemaRef,19) -> PolarsResult<Self> {20let projected_schema = projected_schema.clone();2122Ok(Self {23projected_schema,24ignore_errors: options.ignore_errors,25})26}2728pub(super) fn read_chunk(&self, chunk: &[u8]) -> PolarsResult<DataFrame> {29if self.projected_schema.is_empty() {30Ok(DataFrame::empty_with_height(ndjson::count_rows(chunk)))31} else {32parse_ndjson(chunk, None, &self.projected_schema, self.ignore_errors)33}34}35}363738