Struct arrow::record_batch::RecordBatch[][src]

pub struct RecordBatch { /* fields omitted */ }
Expand description

A two-dimensional batch of column-oriented data with a defined schema.

A RecordBatch is a two-dimensional dataset of a number of contiguous arrays, each the same length. A record batch has a schema which must match its arrays’ datatypes.

Record batches are a convenient unit of work for various serialization and computation functions, possibly incremental. See also CSV reader and JSON reader.

Implementations

impl RecordBatch[src]

pub fn try_new(schema: SchemaRef, columns: Vec<ArrayRef>) -> Result<Self>[src]

Creates a RecordBatch from a schema and columns.

Expects the following:

  • the vec of columns to not be empty
  • the schema and column data types to have equal lengths and match
  • each array in columns to have the same length

If the conditions are not met, an error is returned.

Example

use std::sync::Arc;
use arrow::array::Int32Array;
use arrow::datatypes::{Schema, Field, DataType};
use arrow::record_batch::RecordBatch;

let id_array = Int32Array::from(vec![1, 2, 3, 4, 5]);
let schema = Schema::new(vec![
    Field::new("id", DataType::Int32, false)
]);

let batch = RecordBatch::try_new(
    Arc::new(schema),
    vec![Arc::new(id_array)]
)?;

pub fn try_new_with_options(
    schema: SchemaRef,
    columns: Vec<ArrayRef>,
    options: &RecordBatchOptions
) -> Result<Self>
[src]

Creates a RecordBatch from a schema and columns, with additional options, such as whether to strictly validate field names.

See RecordBatch::try_new for the expected conditions.

pub fn new_empty(schema: SchemaRef) -> Self[src]

Creates a new empty RecordBatch.

pub fn schema(&self) -> SchemaRef[src]

Returns the Schema of the record batch.

pub fn num_columns(&self) -> usize[src]

Returns the number of columns in the record batch.

Example

use std::sync::Arc;
use arrow::array::Int32Array;
use arrow::datatypes::{Schema, Field, DataType};
use arrow::record_batch::RecordBatch;

let id_array = Int32Array::from(vec![1, 2, 3, 4, 5]);
let schema = Schema::new(vec![
    Field::new("id", DataType::Int32, false)
]);

let batch = RecordBatch::try_new(Arc::new(schema), vec![Arc::new(id_array)])?;

assert_eq!(batch.num_columns(), 1);

pub fn num_rows(&self) -> usize[src]

Returns the number of rows in each column.

Panics

Panics if the RecordBatch contains no columns.

Example

use std::sync::Arc;
use arrow::array::Int32Array;
use arrow::datatypes::{Schema, Field, DataType};
use arrow::record_batch::RecordBatch;

let id_array = Int32Array::from(vec![1, 2, 3, 4, 5]);
let schema = Schema::new(vec![
    Field::new("id", DataType::Int32, false)
]);

let batch = RecordBatch::try_new(Arc::new(schema), vec![Arc::new(id_array)])?;

assert_eq!(batch.num_rows(), 5);

pub fn column(&self, index: usize) -> &ArrayRef[src]

Get a reference to a column’s array by index.

Panics

Panics if index is outside of 0..num_columns.

pub fn columns(&self) -> &[ArrayRef]

Notable traits for &'_ mut [u8]

impl<'_> Write for &'_ mut [u8]impl<'_> Read for &'_ [u8]
[src]

Get a reference to all columns in the record batch.

pub fn try_from_iter<I, F>(value: I) -> Result<Self> where
    I: IntoIterator<Item = (F, ArrayRef)>,
    F: AsRef<str>, 
[src]

Create a RecordBatch from an iterable list of pairs of the form (field_name, array), with the same requirements on fields and arrays as RecordBatch::try_new. This method is often used to create a single RecordBatch from arrays, e.g. for testing.

The resulting schema is marked as nullable for each column if the array for that column is has any nulls. To explicitly specify nullibility, use RecordBatch::try_from_iter_with_nullable

Example:

use std::sync::Arc;
use arrow::array::{ArrayRef, Int32Array, StringArray};
use arrow::datatypes::{Schema, Field, DataType};
use arrow::record_batch::RecordBatch;

let a: ArrayRef = Arc::new(Int32Array::from(vec![1, 2]));
let b: ArrayRef = Arc::new(StringArray::from(vec!["a", "b"]));

let record_batch = RecordBatch::try_from_iter(vec![
  ("a", a),
  ("b", b),
]);

pub fn try_from_iter_with_nullable<I, F>(value: I) -> Result<Self> where
    I: IntoIterator<Item = (F, ArrayRef, bool)>,
    F: AsRef<str>, 
[src]

Create a RecordBatch from an iterable list of tuples of the form (field_name, array, nullable), with the same requirements on fields and arrays as RecordBatch::try_new. This method is often used to create a single RecordBatch from arrays, e.g. for testing.

Example:

use std::sync::Arc;
use arrow::array::{ArrayRef, Int32Array, StringArray};
use arrow::datatypes::{Schema, Field, DataType};
use arrow::record_batch::RecordBatch;

let a: ArrayRef = Arc::new(Int32Array::from(vec![1, 2]));
let b: ArrayRef = Arc::new(StringArray::from(vec![Some("a"), Some("b")]));

// Note neither `a` nor `b` has any actual nulls, but we mark
// b an nullable
let record_batch = RecordBatch::try_from_iter_with_nullable(vec![
  ("a", a, false),
  ("b", b, true),
]);

Trait Implementations

impl Clone for RecordBatch[src]

fn clone(&self) -> RecordBatch[src]

Returns a copy of the value. Read more

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl Debug for RecordBatch[src]

fn fmt(&self, f: &mut Formatter<'_>) -> Result[src]

Formats the value using the given formatter. Read more

impl From<&'_ StructArray> for RecordBatch[src]

fn from(struct_array: &StructArray) -> Self[src]

Create a record batch from struct array, where each field of the StructArray becomes a Field in the schema.

This currently does not flatten and nested struct types

impl From<RecordBatch> for StructArray[src]

fn from(batch: RecordBatch) -> Self[src]

Performs the conversion.

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

pub fn to_owned(&self) -> T[src]

Creates owned data from borrowed data, usually by cloning. Read more

pub fn clone_into(&self, target: &mut T)[src]

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 

pub fn vzip(self) -> V