Skip to content

Port feast 0.10+ data model to feast-serving#37

Merged
woop merged 39 commits into
feast-dev:masterfrom
achals:achal/registry-backed-serving
Oct 7, 2021
Merged

Port feast 0.10+ data model to feast-serving#37
woop merged 39 commits into
feast-dev:masterfrom
achals:achal/registry-backed-serving

Conversation

@achals
Copy link
Copy Markdown
Member

@achals achals commented Sep 22, 2021

This PR the Feast data model introduced in feast 0.10+ to feast-serving in a backwards compatible way.

If a registry location is specified in the application.yml that implies that feast-serving should use the new data model (feature views and the registry proto instead of the SpecService).

Currently, this has only been tested on the Redis online store. Also, in this version of the PR only local registry files are supported. However, interfaces are defined to allow reading the registry from other locations as needed. Similarly, other online stores may be used (but as of feast 0.13 BigTable and Cassandra are not supported for materializations).

Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
@achals achals requested review from adchia and woop September 22, 2021 06:10
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
achals added 11 commits October 5, 2021 16:16
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
@adchia adchia self-assigned this Oct 6, 2021
import org.springframework.core.env.Environment;
import org.springframework.core.type.AnnotatedTypeMetadata;

public class CoreCondition implements Condition {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add javadocs?

@Override
public RegistryProto.Registry getRegistry() {
try {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: remove extra lines in the beginning / end of this try?

Comment thread serving/src/main/java/feast/serving/config/RegistryCondition.java
}

@Override
public RegistryProto.Registry getRegistry() {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do you want to cache this file read?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah good idea

import org.apache.commons.lang3.tuple.Pair;

// This is derived from
// https://github.com/feast-dev/feast/blob/b1ccf8dd1535f721aee8bea937ee38feff80bec5/sdk/python/feast/infra/key_encoding_utils.py#L22
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ugh

@Override
public List<String> getEntitiesList(
String projectName, ServingAPIProto.FeatureReferenceV2 featureReference) {
final RegistryProto.Registry registry = this.registryRepository.getRegistry();
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

any reason why we wouldn't push these methods all into the RegistryRepo?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I want to keep implementing custom registries (s3, GCS) easy so I decoupled the two layers.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i see. could see these being methods in a base class (or helper methods). These logically seem to fit better within a registry than here

achals added 2 commits October 6, 2021 08:31
Signed-off-by: Achal Shah <achals@gmail.com>
Signed-off-by: Achal Shah <achals@gmail.com>
@woop woop merged commit e622a88 into feast-dev:master Oct 7, 2021
mdeutch pushed a commit to mdeutch/feast-java that referenced this pull request Oct 10, 2021
* Update feast dep to 0.12

Signed-off-by: Achal Shah <achals@gmail.com>

* Port feast 0.10+ data model to feast-serving

Signed-off-by: Achal Shah <achals@gmail.com>

* Fix tests

Signed-off-by: Achal Shah <achals@gmail.com>

* Fix integ tests

Signed-off-by: Achal Shah <achals@gmail.com>

* Fix integ tests

Signed-off-by: Achal Shah <achals@gmail.com>

* remove logging

Signed-off-by: Achal Shah <achals@gmail.com>

* Fix ilnt

Signed-off-by: Achal Shah <achals@gmail.com>

* Fix serialization

Signed-off-by: Achal Shah <achals@gmail.com>

* Implement EntityKeySerialization correctly

Signed-off-by: Achal Shah <achals@gmail.com>

* Update workflows

Signed-off-by: Achal Shah <achals@gmail.com>

* Update python version

Signed-off-by: Achal Shah <achals@gmail.com>

* Change redis ports

Signed-off-by: Achal Shah <achals@gmail.com>

* materialize into redis

Signed-off-by: Achal Shah <achals@gmail.com>

* fix path

Signed-off-by: Achal Shah <achals@gmail.com>

* Install redis vairant

Signed-off-by: Achal Shah <achals@gmail.com>

* Remove odfv

Signed-off-by: Achal Shah <achals@gmail.com>

* Include test file

Signed-off-by: Achal Shah <achals@gmail.com>

* update source

Signed-off-by: Achal Shah <achals@gmail.com>

* update source

Signed-off-by: Achal Shah <achals@gmail.com>

* update source

Signed-off-by: Achal Shah <achals@gmail.com>

* update source

Signed-off-by: Achal Shah <achals@gmail.com>

* Wrestling with spring

Signed-off-by: Achal Shah <achals@gmail.com>

* Tests

Signed-off-by: Achal Shah <achals@gmail.com>

* Remove github action

Signed-off-by: Achal Shah <achals@gmail.com>

* Add registry

Signed-off-by: Achal Shah <achals@gmail.com>

* Remove redundant stuff

Signed-off-by: Achal Shah <achals@gmail.com>

* Rename test

Signed-off-by: Achal Shah <achals@gmail.com>

* awaitTermination

Signed-off-by: Achal Shah <achals@gmail.com>

* lint

Signed-off-by: Achal Shah <achals@gmail.com>

* lint

Signed-off-by: Achal Shah <achals@gmail.com>

* dynamic properties instead

Signed-off-by: Achal Shah <achals@gmail.com>

* dirtiescontext

Signed-off-by: Achal Shah <achals@gmail.com>

* python 3.7

Signed-off-by: Achal Shah <achals@gmail.com>

* spotless

Signed-off-by: Achal Shah <achals@gmail.com>

* Dirty Context after test method as well

Signed-off-by: Achal Shah <achals@gmail.com>

* Cleanup

Signed-off-by: Achal Shah <achals@gmail.com>

* Cleanup

Signed-off-by: Achal Shah <achals@gmail.com>

* cr

Signed-off-by: Achal Shah <achals@gmail.com>

* spotless

Signed-off-by: Achal Shah <achals@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants