Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
b349ad6
Initial implementation of BigTable online store.
chhabrakadabra Aug 25, 2022
f9f45bb
Attempt to run bigtable integration tests.
chhabrakadabra Sep 5, 2022
2a1a863
Got the BigTable tests running in local containers
chhabrakadabra Sep 5, 2022
96814d6
Set serialization version when computing entity ID
chhabrakadabra Sep 6, 2022
6e6233f
Switch to the recommended layout in bigtable.
chhabrakadabra Sep 6, 2022
2a0d09a
Minor bugfixes.
chhabrakadabra Sep 10, 2022
98532a5
Move BigTable online store out of contrib
chhabrakadabra Sep 27, 2022
2a65fef
Attempt to run integration tests in CI.
chhabrakadabra Sep 28, 2022
de795f3
Delete tables for entity-less feature views.
chhabrakadabra Sep 28, 2022
bf798e8
Table names should be smaller than 50 characters
chhabrakadabra Sep 28, 2022
eb3ab91
Optimize bigtable reads.
chhabrakadabra Sep 28, 2022
1383b7e
dynamodb: switch to `mock_dynamodb`
chhabrakadabra Sep 28, 2022
6986fa9
minor: rename `BigTable` to `Bigtable`
chhabrakadabra Sep 29, 2022
3cd76a8
Wrote some Bigtable documentation.
chhabrakadabra Sep 29, 2022
c7449cc
Bugfix: Deal with missing row keys.
chhabrakadabra Sep 30, 2022
f356312
Fix linting issues.
chhabrakadabra Sep 30, 2022
ff62c6b
Generate requirements files.
chhabrakadabra Sep 30, 2022
cce3602
Don't bother materializing created timestamp.
chhabrakadabra Sep 30, 2022
943ee3f
Remove `tensorflow-metadata`.
chhabrakadabra Sep 30, 2022
ab80b42
Minor fix to Bigtable documentation.
chhabrakadabra Oct 5, 2022
4755745
update roadmap docs
adchia Oct 5, 2022
c0f2d8e
Fix roadmap doc
adchia Oct 5, 2022
2d6bdac
Change link to point to roadmap page
adchia Oct 5, 2022
992c318
change order in roadmap
adchia Oct 5, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Minor bugfixes.
- If a row is empty when fetching data, don't process it more.
- If a task in the threadpool fails, bubble up that failure.
- If a `created_ts` is not available, use an empty string. `None` does
  not automatically serialize to bytes.

Signed-off-by: Abhin Chhabra <chhabra.abhin@gmail.com>
  • Loading branch information
chhabrakadabra committed Sep 30, 2022
commit 2a0d09ac47e722e309e4f24667d2fb65d527d5c1
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,13 @@
from pydantic import StrictStr
from pydantic.typing import Literal

from feast import Entity, FeatureView, feature_view, utils
from feast import Entity, FeatureView, utils
from feast.infra.online_stores.helpers import compute_entity_id
from feast.infra.online_stores.online_store import OnlineStore
from feast.protos.feast.types.EntityKey_pb2 import EntityKey as EntityKeyProto
from feast.protos.feast.types.Value_pb2 import Value as ValueProto
from feast.protos.feast.types.Value_pb2 import ValueType
from feast.repo_config import FeastConfigBaseModel, RepoConfig
from feast.usage import get_user_agent, log_exceptions_and_usage, tracing_span
from feast.usage import log_exceptions_and_usage

logger = logging.getLogger(__name__)

Expand Down Expand Up @@ -84,6 +83,7 @@ def online_read(

if row is None:
batch_result.append((None, None))
continue

row_values = row.cells[self.feature_column_family]
# TODO: check if we need created_ts anywhere
Expand Down Expand Up @@ -142,7 +142,14 @@ def online_write_batch(
progress=progress,
)
)
futures.wait(fs)
done_tasks, not_done_tasks = futures.wait(fs)
for task in done_tasks:
# If a task raised an exception, this will raise it here as well
task.result()
if not_done_tasks:
raise RuntimeError(
f"Not all batches were written to BigTable: {not_done_tasks}"
)

def _write_rows_to_bt(
self,
Expand Down Expand Up @@ -180,7 +187,7 @@ def _write_rows_to_bt(
b"created_ts",
utils.make_tzaware(created_ts).isoformat().encode()
if created_ts is not None
else None,
else b"",
)
rows.append(bt_row)
bt_table.mutate_rows(rows)
Expand Down Expand Up @@ -294,8 +301,4 @@ def teardown(
def _get_client(
self, online_config: BigTableOnlineStoreConfig, admin: bool = False
):
if not self._client:
self._client = bigtable.Client(
project=online_config.project_id, admin=admin
)
return self._client
return bigtable.Client(project=online_config.project_id, admin=admin)