pub struct MeteredJsonHandler { /* private fields */ }Expand description
Decorator over an engine-provided Arc<dyn JsonHandler> that emits a
JsonReadCompleted span on every read_json_files call. parse_json and
write_json_file are pass-through and emit nothing.
Implementations§
Source§impl MeteredJsonHandler
impl MeteredJsonHandler
Sourcepub fn new(inner: Arc<dyn JsonHandler>) -> Self
pub fn new(inner: Arc<dyn JsonHandler>) -> Self
Wrap inner. Debug-asserts that inner is not already a MeteredJsonHandler
so spans are emitted exactly once.
Trait Implementations§
Source§impl Debug for MeteredJsonHandler
impl Debug for MeteredJsonHandler
Source§impl JsonHandler for MeteredJsonHandler
impl JsonHandler for MeteredJsonHandler
Source§fn parse_json(
&self,
json_strings: Box<dyn EngineData>,
output_schema: SchemaRef,
) -> DeltaResult<Box<dyn EngineData>>
fn parse_json( &self, json_strings: Box<dyn EngineData>, output_schema: SchemaRef, ) -> DeltaResult<Box<dyn EngineData>>
Parse the given json strings and return the fields requested by output schema as columns in
EngineData. json_strings MUST be a single column batch of engine data, and the
column type must be stringSource§fn read_json_files(
&self,
files: &[FileMeta],
physical_schema: SchemaRef,
predicate: Option<PredicateRef>,
) -> DeltaResult<FileDataReadResultIterator>
fn read_json_files( &self, files: &[FileMeta], physical_schema: SchemaRef, predicate: Option<PredicateRef>, ) -> DeltaResult<FileDataReadResultIterator>
Read and parse the JSON format file at given locations and return the data as EngineData
with the columns requested by physical schema. Note: The
FileDataReadResultIterator
must emit data from files in the order that files is given. For example if files [“a”,
“b”] is provided, then the engine data iterator must first return all the engine data
from file “a”, then all the engine data from file “b”. Moreover, for a given file, all
of its EngineData and constituent rows must be in order that they occur in the file.
Consider a file with rows (1, 2, 3). The following are legal iterator batches:
iter: [EngineData(1, 2), EngineData(3)]
iter: [EngineData(1), EngineData(2, 3)]
iter: [EngineData(1, 2, 3)]
The following are illegal batches:
iter: [EngineData(3), EngineData(1, 2)]
iter: [EngineData(1), EngineData(3, 2)]
iter: [EngineData(2, 1, 3)] Read moreSource§fn read_json_files_with_cancellation(
&self,
files: &[FileMeta],
physical_schema: SchemaRef,
predicate: Option<PredicateRef>,
cancellation_token: Option<CancellationTokenRef>,
) -> DeltaResult<FileDataReadResultIterator>
fn read_json_files_with_cancellation( &self, files: &[FileMeta], physical_schema: SchemaRef, predicate: Option<PredicateRef>, cancellation_token: Option<CancellationTokenRef>, ) -> DeltaResult<FileDataReadResultIterator>
Cancellation-aware variant of
read_json_files. Read moreSource§fn write_json_file(
&self,
path: &Url,
data: DeltaResultIterator<'_, FilteredEngineData>,
overwrite: bool,
) -> DeltaResult<()>
fn write_json_file( &self, path: &Url, data: DeltaResultIterator<'_, FilteredEngineData>, overwrite: bool, ) -> DeltaResult<()>
Atomically (!) write a single JSON file. Each selected row of the input data must be
written as a new JSON object appended to the file; rows not selected by a batch’s
selection vector (see
FilteredEngineData) must not be written.
FilteredEngineData::apply_selection_vector produces the selected-rows view for
implementations that do not filter during serialization. This write must:
(1) serialize the selected rows to newline-delimited json (each row is a json object
literal)
(2) write the data to storage atomically (i.e. if the file already exists, fail unless the
overwrite flag is set) Read moreAuto Trait Implementations§
impl !RefUnwindSafe for MeteredJsonHandler
impl !UnwindSafe for MeteredJsonHandler
impl Freeze for MeteredJsonHandler
impl Send for MeteredJsonHandler
impl Sync for MeteredJsonHandler
impl Unpin for MeteredJsonHandler
impl UnsafeUnpin for MeteredJsonHandler
Blanket Implementations§
Source§impl<T> AsAny for T
impl<T> AsAny for T
Source§fn any_ref(&self) -> &(dyn Any + Send + Sync + 'static)
fn any_ref(&self) -> &(dyn Any + Send + Sync + 'static)
Obtains a
dyn Any reference to the object: Read moreSource§fn as_any(self: Arc<T>) -> Arc<dyn Any + Send + Sync> ⓘ
fn as_any(self: Arc<T>) -> Arc<dyn Any + Send + Sync> ⓘ
Obtains an
Arc<dyn Any> reference to the object: Read moreSource§fn into_any(self: Box<T>) -> Box<dyn Any + Send + Sync>
fn into_any(self: Box<T>) -> Box<dyn Any + Send + Sync>
Converts the object to
Box<dyn Any>: Read moreSource§fn type_name(&self) -> &'static str
fn type_name(&self) -> &'static str
Convenient wrapper for
std::any::type_name, since Any does not provide it and
Any::type_id is useless as a debugging aid (its Debug is just a mess of hex digits).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
Mutably borrows from an owned value. Read more
Source§impl<T> FoldWithOption for T
impl<T> FoldWithOption for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
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> ⓘ
Converts
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> ⓘ
Converts
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 moreSource§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<KernelType, ArrowType> TryIntoArrow<ArrowType> for KernelTypewhere
ArrowType: TryFromKernel<KernelType>,
impl<KernelType, ArrowType> TryIntoArrow<ArrowType> for KernelTypewhere
ArrowType: TryFromKernel<KernelType>,
Source§fn try_into_arrow(self) -> Result<ArrowType, ArrowError>
fn try_into_arrow(self) -> Result<ArrowType, ArrowError>
Available on crate feature
arrow-conversion and (crate features arrow-conversion or declarative-plans or default-engine-base) only.Source§impl<KernelType, ArrowType> TryIntoKernel<KernelType> for ArrowTypewhere
KernelType: TryFromArrow<ArrowType>,
impl<KernelType, ArrowType> TryIntoKernel<KernelType> for ArrowTypewhere
KernelType: TryFromArrow<ArrowType>,
Source§fn try_into_kernel(self) -> Result<KernelType, ArrowError>
fn try_into_kernel(self) -> Result<KernelType, ArrowError>
Available on crate feature
arrow-conversion and (crate features arrow-conversion or declarative-plans or default-engine-base) only.