-
Notifications
You must be signed in to change notification settings - Fork 6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Data] support batch_format for Sort and Aggregate #48287
Conversation
a2b2bc3
to
0045e27
Compare
Hi @scottjlee, could you take a look when you have time? Thanks a lot! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great start, have a suggestion on how we can set the batch_format without having it explicitly set at Dataset
level.
python/ray/data/_internal/logical/rules/inherit_batch_format.py
Outdated
Show resolved
Hide resolved
python/ray/data/_internal/logical/rules/inherit_batch_format.py
Outdated
Show resolved
Hide resolved
6fc8b80
to
bc0caf0
Compare
bc0caf0
to
e3f14e7
Compare
python/ray/data/_internal/logical/rules/inherit_batch_format.py
Outdated
Show resolved
Hide resolved
81097ac
to
f39498b
Compare
Signed-off-by: Xingyu Long <[email protected]>
Signed-off-by: Xingyu Long <[email protected]>
Signed-off-by: Xingyu Long <[email protected]>
Signed-off-by: Xingyu Long <[email protected]>
Signed-off-by: Xingyu Long <[email protected]>
f39498b
to
e4f5009
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for your contribution @xingyu-long !
python/ray/data/_internal/logical/rules/inherit_batch_format.py
Outdated
Show resolved
Hide resolved
python/ray/data/_internal/logical/rules/inherit_batch_format.py
Outdated
Show resolved
Hide resolved
Signed-off-by: Xingyu Long <[email protected]>
20a24af
to
afeb03c
Compare
for node in op.post_order_iter(): | ||
nodes.appendleft(node) | ||
|
||
while len(nodes) > 0: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's combine these 2 loops
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looking through the codebase, I was trying to use same coding style for this matter. it seems not worth it to combine? Thanks!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We can't just blindly follow the patterns, these need to make sense, right?
What's the motivation for first collecting the nodes into a queue, instead of traversing the iterator directly?
Signed-off-by: Xingyu Long <[email protected]>
## Why are these changes needed? While we calling `xxx.map_groups(..., batch_format="...")`, we may invoke sort function and creating empty blocks which still uses pyarrow by default. And, when we invoke another sort call on top of it, we will hit `AttributeError: 'DataFrame' object has no attribute 'num_rows'` since we uses first block type. (However, we may have different blocks). See more details in ray-project#46748 ## Related issue number Close ray-project#46748 ## Checks - [x] I've signed off every commit(by using the -s flag, i.e., `git commit -s`) in this PR. - [x] I've run `scripts/format.sh` to lint the changes in this PR. - [ ] I've included any doc changes needed for https://docs.ray.io/en/master/. - [ ] I've added any new APIs to the API Reference. For example, if I added a method in Tune, I've added it in `doc/source/tune/api/` under the corresponding `.rst` file. - [x] I've made sure the tests are passing. Note that there might be a few flaky tests, see the recent failures at https://flakey-tests.ray.io/ - Testing Strategy - [x] Unit tests - [ ] Release tests - [ ] This PR is not tested :( --------- Signed-off-by: Xingyu Long <[email protected]> Co-authored-by: Scott Lee <[email protected]>
## Why are these changes needed? While we calling `xxx.map_groups(..., batch_format="...")`, we may invoke sort function and creating empty blocks which still uses pyarrow by default. And, when we invoke another sort call on top of it, we will hit `AttributeError: 'DataFrame' object has no attribute 'num_rows'` since we uses first block type. (However, we may have different blocks). See more details in ray-project#46748 ## Related issue number Close ray-project#46748 ## Checks - [x] I've signed off every commit(by using the -s flag, i.e., `git commit -s`) in this PR. - [x] I've run `scripts/format.sh` to lint the changes in this PR. - [ ] I've included any doc changes needed for https://docs.ray.io/en/master/. - [ ] I've added any new APIs to the API Reference. For example, if I added a method in Tune, I've added it in `doc/source/tune/api/` under the corresponding `.rst` file. - [x] I've made sure the tests are passing. Note that there might be a few flaky tests, see the recent failures at https://flakey-tests.ray.io/ - Testing Strategy - [x] Unit tests - [ ] Release tests - [ ] This PR is not tested :( --------- Signed-off-by: Xingyu Long <[email protected]> Co-authored-by: Scott Lee <[email protected]> Signed-off-by: mohitjain2504 <[email protected]>
## Why are these changes needed? While we calling `xxx.map_groups(..., batch_format="...")`, we may invoke sort function and creating empty blocks which still uses pyarrow by default. And, when we invoke another sort call on top of it, we will hit `AttributeError: 'DataFrame' object has no attribute 'num_rows'` since we uses first block type. (However, we may have different blocks). See more details in ray-project#46748 ## Related issue number Close ray-project#46748 ## Checks - [x] I've signed off every commit(by using the -s flag, i.e., `git commit -s`) in this PR. - [x] I've run `scripts/format.sh` to lint the changes in this PR. - [ ] I've included any doc changes needed for https://docs.ray.io/en/master/. - [ ] I've added any new APIs to the API Reference. For example, if I added a method in Tune, I've added it in `doc/source/tune/api/` under the corresponding `.rst` file. - [x] I've made sure the tests are passing. Note that there might be a few flaky tests, see the recent failures at https://flakey-tests.ray.io/ - Testing Strategy - [x] Unit tests - [ ] Release tests - [ ] This PR is not tested :( --------- Signed-off-by: Xingyu Long <[email protected]> Co-authored-by: Scott Lee <[email protected]> Signed-off-by: hjiang <[email protected]>
Why are these changes needed?
While we calling
xxx.map_groups(..., batch_format="...")
, we may invoke sort function and creating empty blocks which still uses pyarrow by default. And, when we invoke another sort call on top of it, we will hitAttributeError: 'DataFrame' object has no attribute 'num_rows'
since we uses first block type. (However, we may have different blocks). See more details in #46748Related issue number
Close #46748
Checks
git commit -s
) in this PR.scripts/format.sh
to lint the changes in this PR.method in Tune, I've added it in
doc/source/tune/api/
under thecorresponding
.rst
file.