Skip to content

Add support for BigTable Online Storage - #17

Merged
pyalex merged 19 commits into
feast-dev:masterfrom
terryyylim:bigtable-serving
Mar 31, 2021
Merged

Add support for BigTable Online Storage#17
pyalex merged 19 commits into
feast-dev:masterfrom
terryyylim:bigtable-serving

Conversation

@terryyylim

Copy link
Copy Markdown
Member

Signed-off-by: Terence Lim terencelimxp@gmail.com

What this PR does / why we need it:

Which issue(s) this PR fixes:

Fixes #

Does this PR introduce a user-facing change?:

BigTable online store is available as alternative storage to Redis and Redis Cluster.

Signed-off-by: Terence Lim <terencelimxp@gmail.com>
Signed-off-by: Terence Lim <terencelimxp@gmail.com>
@woop

woop commented Mar 29, 2021

Copy link
Copy Markdown
Member

By the way, can we please do a comparison of the size of the serving jar before and after adding Bigtable? I remember some folks had reasonable concerns about bloat in both Core and Serving previously when we pulled in all the GCP dependencies.

terryyylim and others added 5 commits March 29, 2021 12:24
Signed-off-by: Terence Lim <terencelimxp@gmail.com>
Signed-off-by: Oleksii Moskalenko <moskalenko.alexey@gmail.com>
Signed-off-by: Oleksii Moskalenko <moskalenko.alexey@gmail.com>
Signed-off-by: Terence Lim <terencelimxp@gmail.com>
Signed-off-by: Terence Lim <terencelimxp@gmail.com>
Comment thread serving/pom.xml Outdated
</dependency>


<dependency>

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

shouldn't this dependency be inside connector?

Comment thread storage/api/src/main/java/feast/storage/api/retriever/NativeFeature.java Outdated
}

// Same feature reference, but empty value
if (feastValue.equals(ValueProto.Value.ValCase.VAL_NOT_SET)) {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

how actual value can be not set?

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.

Removed check.

ValueProto.Value feastValue = getFeatureValue(valueType);

// Same feature reference, but different type
if (valueType.equals(ValueProto.ValueType.Enum.INVALID)) {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

how value type from spec can be invalid?

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.

Removed check.

return true;
}

return TYPE_TO_VAL_CASE.get(valueType).equals(feastValue.getValCase());

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

we convert value from bigtable based on type from Spec. how they can not match?


@BeforeAll
static void globalSetup() throws IOException {
coreClient = TestUtils.getApiClientForCore(FEAST_CORE_PORT);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

this method has 200 loc. it's simply hard to read. can we split it into functions and maybe eliminate some common parts?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

And should we probably move data creation into relevant tests? instead of creating them all together.

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.

Yeap, it would be cleaner by refactoring common parts out. As for data creation, I think it's cleaner to isolate data generation before all tests start running and only keep retrieval logic in the tests.

Signed-off-by: Terence Lim <terencelimxp@gmail.com>
Signed-off-by: Terence Lim <terencelimxp@gmail.com>
Signed-off-by: Terence Lim <terencelimxp@gmail.com>
@terryyylim terryyylim changed the title WIP: Support BigTable Online Storage Add support for BigTable Online Storage Mar 29, 2021
Signed-off-by: Terence Lim <terencelimxp@gmail.com>
terryyylim and others added 5 commits March 30, 2021 17:15
Signed-off-by: Terence Lim <terencelimxp@gmail.com>
Signed-off-by: Oleksii Moskalenko <moskalenko.alexey@gmail.com>
Signed-off-by: Terence Lim <terencelimxp@gmail.com>
Signed-off-by: Terence Lim <terencelimxp@gmail.com>
Signed-off-by: Terence Lim <terencelimxp@gmail.com>
Signed-off-by: Terence Lim <terencelimxp@gmail.com>
Signed-off-by: Terence Lim <terencelimxp@gmail.com>
Signed-off-by: Terence Lim <terencelimxp@gmail.com>
@pyalex pyalex added the enhancement New feature or request label Mar 31, 2021
@terryyylim

Copy link
Copy Markdown
Member Author

By the way, can we please do a comparison of the size of the serving jar before and after adding Bigtable? I remember some folks had reasonable concerns about bloat in both Core and Serving previously when we pulled in all the GCP dependencies.

Before adding Bigtable: 89652017 bytes
After adding Bigtable: 99218087 bytes

@pyalex
pyalex merged commit b1a4048 into feast-dev:master Mar 31, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants