TimelyDataflow / TimelyDataflow/timely-dataflow

How do you minimize/optimize data movement?

Open
#160 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

question
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.