DistributedDataset

Trait DistributedDataset 

Source
pub trait DistributedDataset: Send + Sync {
    type Item;
    type PartitionStrategy;

    // Required methods
    fn size(&self) -> u64;
    fn partition_count(&self) -> u32;
    fn partition<'a>(
        &'a mut self,
        cluster: &'a dyn DistributedCluster,
        strategy: Self::PartitionStrategy,
    ) -> BoxFuture<'a, Result<Vec<DistributedPartition<Self::Item>>>>;
    fn get_partition(
        &self,
        partition_id: u32,
    ) -> BoxFuture<'_, Result<DistributedPartition<Self::Item>>>;
    fn repartition<'a>(
        &'a mut self,
        cluster: &'a dyn DistributedCluster,
        new_strategy: Self::PartitionStrategy,
    ) -> BoxFuture<'a, Result<()>>;
    fn collect(
        &self,
        cluster: &dyn DistributedCluster,
    ) -> BoxFuture<'_, Result<Vec<Self::Item>>>;
    fn partition_assignment(&self) -> HashMap<NodeId, Vec<u32>>;
}
Expand description

Trait for datasets that can be distributed across cluster nodes

Required Associated Types§

Source

type Item

Associated type for data items

Source

type PartitionStrategy

Associated type for partitioning strategy

Required Methods§

Source

fn size(&self) -> u64

Get the total size of the dataset

Source

fn partition_count(&self) -> u32

Get the number of partitions

Source

fn partition<'a>( &'a mut self, cluster: &'a dyn DistributedCluster, strategy: Self::PartitionStrategy, ) -> BoxFuture<'a, Result<Vec<DistributedPartition<Self::Item>>>>

Partition the dataset across cluster nodes

Source

fn get_partition( &self, partition_id: u32, ) -> BoxFuture<'_, Result<DistributedPartition<Self::Item>>>

Get a specific partition

Source

fn repartition<'a>( &'a mut self, cluster: &'a dyn DistributedCluster, new_strategy: Self::PartitionStrategy, ) -> BoxFuture<'a, Result<()>>

Repartition the dataset with a new strategy

Source

fn collect( &self, cluster: &dyn DistributedCluster, ) -> BoxFuture<'_, Result<Vec<Self::Item>>>

Collect all partitions back to coordinator

Source

fn partition_assignment(&self) -> HashMap<NodeId, Vec<u32>>

Get partition assignment for nodes

Implementors§