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§
Sourcetype PartitionStrategy
type PartitionStrategy
Associated type for partitioning strategy
Required Methods§
Sourcefn partition_count(&self) -> u32
fn partition_count(&self) -> u32
Get the number of partitions
Sourcefn partition<'a>(
&'a mut self,
cluster: &'a dyn DistributedCluster,
strategy: Self::PartitionStrategy,
) -> BoxFuture<'a, Result<Vec<DistributedPartition<Self::Item>>>>
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
Sourcefn get_partition(
&self,
partition_id: u32,
) -> BoxFuture<'_, Result<DistributedPartition<Self::Item>>>
fn get_partition( &self, partition_id: u32, ) -> BoxFuture<'_, Result<DistributedPartition<Self::Item>>>
Get a specific partition
Sourcefn repartition<'a>(
&'a mut self,
cluster: &'a dyn DistributedCluster,
new_strategy: Self::PartitionStrategy,
) -> BoxFuture<'a, Result<()>>
fn repartition<'a>( &'a mut self, cluster: &'a dyn DistributedCluster, new_strategy: Self::PartitionStrategy, ) -> BoxFuture<'a, Result<()>>
Repartition the dataset with a new strategy