-
Notifications
You must be signed in to change notification settings - Fork 996
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
Write feature API on Serving service #1461
Comments
Hi @RoyTal28, Thanks for the proposal! One question that immediately comes to mind: Are users able to push a subset of feature values for a feature table? Feast currently requires that all features in a feature table be provided during ingestion, but we could in the future make it possible to provide a subset. We'd probably need to read the existing row, mutate it, and then write it back. Thanks again :) |
Hey @woop, I am not sure I understand why we would need to read->mutate->write again the row? can u explain? |
It depends on the way features are being stored. Some storage implementations will store the whole feature row as a single value. Meaning you can only update it by reading it first, otherwise some feature values may be lost if the user doesn't provide the complete row. Perhaps for a first cut we can just say that the full feature row should be provided, but add support for partial updates in the future? |
OK, that sounds good. |
Hi, |
I think it's necessary to share this proposal more widely. Many folks have asked for a write/push API, so I'd like to make sure that people agree on the design. I think it would be better to create a Google document like one of these and share it to feast-dev@googlegroups.com. It doesn't have to be very long, but it should just allow people to easily comment on the proposed API and understand the functionality that will be introduced. Overall the design looks good to me, I just want to be sure we're not missing anything. We'd also be happy with sharing it on the mailing list if you don't have time, but we're occupied with a conference (applyconf.com) over the next week. |
I believe the current guarantees are simply that nulls will overwrite what exists in the store. So if you don't provide all features then you will reset existing values. EDIT: @pyalex has confirmed that the current Spark ingestion does allow for partial updates, but we haven't communicated this to end users. |
Hey @woop , |
The document has been in circulation now for a few days. If no objection by the end of the week then we can go ahead. |
@RoyTal28 @rmankevich @qiuleiSFDC we've left comments in the document. I think we're close to getting this pushed over the line. Would you mind having a look? |
@woop sorry for the big delay. |
Thanks @RoyTal28 |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
Hey guys :),
According to the initial discussion that my colleague created.
I want to elaborate more about the write features API and share the proto file for initial feedback.
We think that the API should basically push feature rows for specific feature tables and projects to the online store in a similar way the ingestion logic works (RedisSinkRelation.scala).
The suggested change to the serving proto file is as follows:
Details explanation:
The PushOnlineFeatureRequest contains a definition of the feature table and the project.
And a key-value map containing the values of each row.
**We assume that the feature table and the project (if empty we use default) already exist and validate it.
The PushOnlineFeatureResponse contains a list of RowStatus that represent the pushing status of each row.
I would love to have your feedback so we can move forward and prepare a pull request soon.
Thanks!
The text was updated successfully, but these errors were encountered: