Skip to content

Commit d87283f

Browse files
abhijeet-dhumalntkathole
authored andcommitted
perf: Remove redundant entity key serialization in online_read
Signed-off-by: abhijeet-dhumal <abhijeetdhumal652@gmail.com>
1 parent 59dfdb8 commit d87283f

File tree

2 files changed

+14
-17
lines changed

2 files changed

+14
-17
lines changed

sdk/python/feast/infra/online_stores/snowflake.py

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import itertools
21
import os
32
from binascii import hexlify
43
from datetime import datetime
@@ -168,20 +167,26 @@ def online_read(
168167

169168
requested_features = requested_features if requested_features else []
170169

170+
# Pre-compute serialized entity keys to avoid redundant serialization
171+
serialized_entity_keys = [
172+
serialize_entity_key(
173+
entity_key,
174+
entity_key_serialization_version=config.entity_key_serialization_version,
175+
)
176+
for entity_key in entity_keys
177+
]
178+
171179
entity_fetch_str = ",".join(
172180
[
173181
(
174182
"TO_BINARY("
175183
+ hexlify(
176-
serialize_entity_key(
177-
combo[0],
178-
entity_key_serialization_version=config.entity_key_serialization_version,
179-
)
180-
+ bytes(combo[1], encoding="utf-8")
184+
serialized_entity_key + bytes(feature, encoding="utf-8")
181185
).__str__()[1:]
182186
+ ")"
183187
)
184-
for combo in itertools.product(entity_keys, requested_features)
188+
for serialized_entity_key in serialized_entity_keys
189+
for feature in requested_features
185190
]
186191
)
187192

@@ -197,11 +202,7 @@ def online_read(
197202
"""
198203
df = execute_snowflake_statement(conn, query).fetch_pandas_all()
199204

200-
for entity_key in entity_keys:
201-
entity_key_bin = serialize_entity_key(
202-
entity_key,
203-
entity_key_serialization_version=config.entity_key_serialization_version,
204-
)
205+
for entity_key_bin in serialized_entity_keys:
205206
res = {}
206207
res_ts = None
207208
for index, row in df[df["entity_key"] == entity_key_bin].iterrows():

sdk/python/feast/infra/online_stores/sqlite.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -263,11 +263,7 @@ def online_read(
263263
rows = {
264264
k: list(group) for k, group in itertools.groupby(rows, key=lambda r: r[0])
265265
}
266-
for entity_key in entity_keys:
267-
entity_key_bin = serialize_entity_key(
268-
entity_key,
269-
entity_key_serialization_version=config.entity_key_serialization_version,
270-
)
266+
for entity_key_bin in serialized_entity_keys:
271267
res = {}
272268
res_ts = None
273269
for _, feature_name, val_bin, ts in rows.get(entity_key_bin, []):

0 commit comments

Comments
 (0)