Conversation
Signed-off-by: Mao Liu <1684060+mao-liu@users.noreply.github.com>
e1bcf84 to
c1087c9
Compare
|
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #6853 +/- ##
==========================================
+ Coverage 47.43% 47.46% +0.02%
==========================================
Files 422 422
Lines 52263 52289 +26
Branches 7582 7594 +12
==========================================
+ Hits 24791 24817 +26
+ Misses 25708 25707 -1
- Partials 1764 1765 +1
Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
|
Could you clarify why this needs a second I understand that the intended distinction may be that this PR describes an externally managed Spark/Flink pipeline and therefore treats the dependency as lineage-only metadata. However, the current API leaves two ways to express essentially the same upstream relationship:
Those representations can disagree, and the shared |
What this PR does / why we need it:
In production ML architectures, derived features are often pre-computed by external stream or batch computation engines (e.g., Spark, Flink) that read from existing upstream Feast
FeatureViews and push the transformed features into Feast via aPushSource.Previously, Feast's static registry lineage only tracked:
Because
PushSourcehad no way to declare upstreamFeatureViewdependencies, the connection between the upstream feature views and the push pipeline was lost in both registry lineage metadata and the Feast Web UI graph.This PR adds first-class support for declaring upstream
FeatureViewdependencies onPushSource.Summary of Changes:
protos/feast/core/DataSource.proto):repeated string upstream_feature_views = 2;toPushOptions.sdk/python/feast/data_source.py):PushSourceconstructor to acceptsource_views: Optional[Sequence[Union[BaseFeatureView, str]]].to_proto(),from_proto(), and__eq__()serialization and comparison logic.sdk/python/feast/lineage/registry_lineage.py):EntityRelationedges for upstreamFeatureView/LabelView->DataSource (PushSource).streamSource->FeatureViewdirect relationships are consistently registered for stream/push sources.ui/):parseEntityRelationships.tsto parseupstreamFeatureViewsondataSourcesand draw visual edges.RegistryVisualization.tsxto include stream sources and standalone data sources in the visual DAG.feast applyfor precise FeatureView lineage #6852Protobuf regeneration notes
To avoid mass regeneration of proto files leading to a huge diff, the protos were
generated by pinning generator tools to a version matching the older tools
used when generating the existing files.
A prior commit on master (28bde01 which introduced ConnectionRef) updated DataSource.proto but did not commit the generated DataSource_pb2.py / .pyi bindings. Compiling DataSource.proto now brought in both upstream_feature_views and ConnectionRef.
Rendering of stream sources in Feast Lineage
Previously, there was an inconsistency between FeatureView and StreamFeatureView:
Now, whenever a standard FeatureView has a streamSource defined (PushSource, KafkaSource, KinesisSource, etc.), the relationship
streamSource -> FeatureViewis always drawn. Specific unit tests in both Python (test_registry_lineage.py) and UI (RegistryVisualization.test.tsx) assert this behavior across PushSource, KafkaSource, and KinesisSource.Which issue(s) this PR fixes:
Fixes #6839
Checks
git commit -s)Testing Strategy
Misc
Manual PoC Testing:
source_views, and a downstream feature view.Before:
After:
PoC testing configuration
feature-store.yaml
definitions.py