TimelyDataflow / TimelyDataflow/timely-dataflow
How do you minimize/optimize data movement?
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 3.6k
- Forks
- 293
- Avg merge
- 14h 46m
- Merged PRs (30d)
- 4
Description
I'm not sure best how to phrase this question, so let me start with a concrete example:
Let's say I have a timely dataflow computation spread over 2 machines. I have records uniquely identified by (foo, bar, baz) tuples. In the dataflow graph, I first use exchange to group by foo and bar together, and then later I need to group by just bar. Ideally I'd like to minimize data movement across machines. So if I'm grouping by foo and bar, ideally every unique bar ends up on one of the 2 machines so that grouping by bar later requires no movement across machines.
Does that make sense? Is that type of optimization supported?
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the exchange operation and the dataflow grouping behavior described in the example. Determine whether grouping by (foo, bar) can preserve placement for a later grouping by bar across two machines. Done means establishing whether this optimization is supported and, if not, defining the required behavior clearly.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- distributed-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100