Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
65880a9
Make a proof of concept
kevjumba Mar 9, 2022
b32b157
Update
kevjumba Mar 11, 2022
1996fd9
revert feature store
kevjumba Mar 17, 2022
c6656d4
refactor
kevjumba Mar 17, 2022
17c8168
Add time
kevjumba Mar 17, 2022
a4efbce
Add time
kevjumba Mar 17, 2022
79d8ba7
clean up
kevjumba Mar 17, 2022
cd652bc
Add comment
kevjumba Mar 17, 2022
4a13e8e
Add pseudocode
kevjumba Mar 17, 2022
a3f8384
Refactor logging functionality to hide internals
kevjumba Mar 20, 2022
706ee80
Refactor
kevjumba Mar 20, 2022
1831003
Revert changes
kevjumba Mar 20, 2022
9e669c3
Add tests
kevjumba Mar 20, 2022
b972634
Add new timeout test
kevjumba Mar 21, 2022
42bdc8b
Fix python ci for m1 mac
kevjumba Mar 25, 2022
ab8d1e0
Fix lint
kevjumba Mar 29, 2022
f6c2c87
Working state
kevjumba Mar 30, 2022
b6b412d
Move offline log store
kevjumba Mar 30, 2022
cb1da99
refactor
kevjumba Mar 30, 2022
155fc77
Update logs
kevjumba Mar 30, 2022
86f2208
Update log storage
kevjumba Mar 30, 2022
746dae9
WOrking state
kevjumba Mar 30, 2022
514c2f6
Work
kevjumba Mar 31, 2022
161d81d
Add tests for filestorage
kevjumba Mar 31, 2022
beec6b2
Fix logging
kevjumba Mar 31, 2022
2a1d2ec
Add more tests
kevjumba Mar 31, 2022
9446e05
Fix
kevjumba Mar 31, 2022
31e0de8
Fix
kevjumba Mar 31, 2022
137d700
Clean up
kevjumba Mar 31, 2022
ee847cd
Update error
kevjumba Mar 31, 2022
ce12eee
semi working state
kevjumba Apr 1, 2022
79c700c
b state
kevjumba Apr 4, 2022
6cbf2c2
Update types to be public
kevjumba Apr 6, 2022
aefda92
Update structs to make fields public
kevjumba Apr 6, 2022
29f72b0
Fix
kevjumba Apr 6, 2022
c4dbb84
clean up
kevjumba Apr 6, 2022
5d7978f
Fix
kevjumba Apr 7, 2022
686c583
Fix go
kevjumba Apr 7, 2022
884b014
Fix issues
kevjumba Apr 7, 2022
c02cf83
Fix
kevjumba Apr 7, 2022
e89abc1
Fix tests
kevjumba Apr 7, 2022
559bb83
Fix
kevjumba Apr 7, 2022
0f2aca9
Working state
kevjumba Apr 8, 2022
c631ef8
Fix
kevjumba Apr 8, 2022
b0a2166
fix
kevjumba Apr 8, 2022
9ed79e8
fix
kevjumba Apr 8, 2022
e472104
Clean up code a bit
kevjumba Apr 8, 2022
629be18
Fixes
kevjumba Apr 8, 2022
8a789fb
Fix
kevjumba Apr 8, 2022
6357efd
Fix tests
kevjumba Apr 8, 2022
3168473
Fix
kevjumba Apr 8, 2022
00228f7
Clean up
kevjumba Apr 8, 2022
b692e81
Update schema functionality
kevjumba Apr 9, 2022
49cd91a
Remove xitongsys parquet reader
kevjumba Apr 9, 2022
4890116
Clean up
kevjumba Apr 11, 2022
71e1e56
Fix go mode
kevjumba Apr 11, 2022
050db82
Fix tests and errors and everything
kevjumba Apr 11, 2022
dd235ca
Fix tests
kevjumba Apr 11, 2022
7c92d93
Fix
kevjumba Apr 11, 2022
4265efd
Remove unused code
kevjumba Apr 11, 2022
79cbe42
Fix
kevjumba Apr 11, 2022
21e99bd
Last working commit
kevjumba Apr 11, 2022
1b173da
work
kevjumba Apr 11, 2022
b5484c3
Address some changes
kevjumba Apr 11, 2022
5458034
More addresses.
kevjumba Apr 11, 2022
17b2bf4
Fix more review comments
kevjumba Apr 11, 2022
0a1802d
Fix
kevjumba Apr 11, 2022
18c7d60
Fix
kevjumba Apr 12, 2022
a39c9b5
Rename
kevjumba Apr 12, 2022
a4587c3
Fix
kevjumba Apr 12, 2022
83c5f89
Add request id
kevjumba Apr 12, 2022
86e605d
More fixes
kevjumba Apr 12, 2022
fa14dae
Fix odfv
kevjumba Apr 12, 2022
9f81d04
Fix
kevjumba Apr 12, 2022
e87fe22
Fix
kevjumba Apr 12, 2022
bdf0c2b
Address other changes
kevjumba Apr 12, 2022
f59f98d
Reorder for optimization
kevjumba Apr 12, 2022
d185ccd
Fix
kevjumba Apr 12, 2022
3747a5d
Add more shcema tests
kevjumba Apr 12, 2022
e9bd35b
Fix tests
kevjumba Apr 12, 2022
89974b3
refactor to clean
kevjumba Apr 12, 2022
d51544b
Add initialized repo for testing
kevjumba Apr 13, 2022
e0a4ec6
Fix
kevjumba Apr 13, 2022
5f9a50e
Remove
kevjumba Apr 13, 2022
1a5d98e
Fix tests
kevjumba Apr 13, 2022
b4d94dc
Fix
kevjumba Apr 13, 2022
8d9d0f9
Fix tests
kevjumba Apr 13, 2022
4e65987
Fix
kevjumba Apr 13, 2022
9d4effa
Text
kevjumba Apr 13, 2022
e604750
Fix
kevjumba Apr 13, 2022
49fb8bc
Fix?
kevjumba Apr 13, 2022
72b1700
Fix
kevjumba Apr 13, 2022
b4f7f41
Fix
kevjumba Apr 13, 2022
f19d19d
remove entity map
pyalex Apr 13, 2022
0145e3d
remove Cache method from registry
pyalex Apr 13, 2022
cad1156
clean up pre-initialized repo
pyalex Apr 13, 2022
89960b2
git ignore full data directory in tests
pyalex Apr 13, 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
semi working state
Signed-off-by: Kevin Zhang <kzhang@tecton.ai>
  • Loading branch information
kevjumba committed Apr 13, 2022
commit ce12eeee0331c4d19983558005cb98bdf747f309
6 changes: 6 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ require (
github.com/golang/snappy v0.0.4 // indirect
github.com/gonuts/commander v0.1.0 // indirect
github.com/gonuts/flag v0.1.0 // indirect
<<<<<<< HEAD
github.com/google/flatbuffers v2.0.5+incompatible // indirect
github.com/klauspost/asmfmt v1.3.1 // indirect
github.com/klauspost/compress v1.15.1 // indirect
Expand All @@ -41,15 +42,20 @@ require (
golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 // indirect
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd // indirect
golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27 // indirect
=======
>>>>>>> 8a7ccbe5 (semi working state)
github.com/google/flatbuffers v2.0.0+incompatible // indirect
github.com/google/go-cmp v0.5.7 // indirect
github.com/klauspost/compress v1.15.1 // indirect
github.com/pierrec/lz4/v4 v4.1.9 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
golang.org/x/exp v0.0.0-20211028214138-64b4c8e87d1a // indirect
golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 // indirect
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f // indirect
golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359 // indirect
golang.org/x/text v0.3.7 // indirect
golang.org/x/tools v0.1.10 // indirect
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
Expand Down
5 changes: 5 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,9 @@ github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiu
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/gonuts/commander v0.1.0 h1:EcDTiVw9oAVORFjQOEOuHQqcl6OXMyTgELocTq6zJ0I=
github.com/gonuts/commander v0.1.0/go.mod h1:qkb5mSlcWodYgo7vs8ulLnXhfinhZsZcm6+H/z1JjgY=
github.com/gonuts/flag v0.1.0 h1:fqMv/MZ+oNGu0i9gp0/IQ/ZaPIDoAZBOBaJoV7viCWM=
github.com/gonuts/flag v0.1.0/go.mod h1:ZTmTGtrSPejTo/SRNhCqwLTmiAgyBdCkLYhHrAoBdz4=
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
Expand Down Expand Up @@ -296,6 +298,7 @@ github.com/pierrec/lz4/v4 v4.1.12 h1:44l88ehTZAUGW4VlO1QC4zkilL99M6Y9MXNwEs0uzP8
github.com/pierrec/lz4/v4 v4.1.12/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
Expand Down Expand Up @@ -428,6 +431,8 @@ golang.org/x/mod v0.6.0-dev.0.20211013180041-c96bc1413d57 h1:LQmS1nU0twXLA96Kt7U
golang.org/x/mod v0.6.0-dev.0.20211013180041-c96bc1413d57/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.5.1-0.20210830214625-1b1db11ec8f4/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 h1:kQgndtyPBW/JIYERgdxfwMYh3AVStj88WQTlNDi2a+o=
golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
Expand Down
38 changes: 37 additions & 1 deletion go/cmd/server/logging/logging.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"log"
"time"

"github.com/apache/arrow/go/arrow/array"
"github.com/feast-dev/feast/go/internal/feast"
"github.com/feast-dev/feast/go/protos/feast/serving"
"github.com/feast-dev/feast/go/protos/feast/types"
Expand All @@ -27,8 +28,15 @@ type Log struct {
RequestContext map[string]*types.RepeatedValue
}

// driver_id,
// 1003, 1004
// [acc rate conv rate avg_daily_trips]
// [entityvalues, acc_rate conv_rate avg_daily_trips, acc_ratestatus, conv_rate_status]
// [entityvalues, entity value]

type MemoryBuffer struct {
logs []*Log
featureService *feast.FeatureService
logs []*Log
}

type LoggingService struct {
Expand Down Expand Up @@ -99,6 +107,7 @@ func (s *LoggingService) flushLogsToOfflineStorage(t time.Time) error {
return fmt.Errorf("could not get offline storage type for config: %s", s.fs.GetRepoConfig().OfflineStore)
}
if offlineStoreType == "file" {

s.offlineLogStorage.FlushToStorage(s.memoryBuffer)
//Clean memory buffer
s.memoryBuffer.logs = s.memoryBuffer.logs[:0]
Expand All @@ -108,3 +117,30 @@ func (s *LoggingService) flushLogsToOfflineStorage(t time.Time) error {
}
return nil
}

func (s *LoggingService) getLogInArrowTable(memoryBuffer *MemoryBuffer) (*array.Table, error) {
// input memoryBuffer -> featureColumns
// map[string]*type.Value

// fields := make([]*arrow.Field, 0)
// columns := make([]array.Interface, 0)
// for idx, feature := range featureService.features {
// feature.Name

// []*proto.Value = columnNameToProtoValue[feature.Name]
// arrowArray := types.ProtoValuesToArrowArray(protoValues)

// fields = append(fields, &arrow.Field{
// Name: feature.Name,
// Type: arrowArray.DataType(),
// })
// columns = append(columns, arrowArray)
// }

// table := array.NewTable(
// arrow.NewSchema(fields, nil),
// columns
// )

// pqarrow.WriteTable(table)
}
15 changes: 15 additions & 0 deletions go/cmd/server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package main

import (
"context"
"log"

"github.com/feast-dev/feast/go/cmd/server/logging"
"github.com/feast-dev/feast/go/internal/feast"
Expand Down Expand Up @@ -32,6 +33,20 @@ func (s *servingServiceServer) GetFeastServingInfo(ctx context.Context, request
// Results contains values including the value of the feature, the event timestamp, and feature status in a columnar format.
func (s *servingServiceServer) GetOnlineFeatures(ctx context.Context, request *serving.GetOnlineFeaturesRequest) (*serving.GetOnlineFeaturesResponse, error) {
featuresOrService, err := s.fs.ParseFeatures(request.GetKind())
log.Println("Swag money 123")
if featuresOrService.FeatureService != nil {
log.Println("INDSFS")

log.Println(featuresOrService.FeatureService.Projections[0].Features)
log.Println(featuresOrService.FeatureService.Projections[0].JoinKeyMap)
}
// if featuresOrService.FeatureService != nil {
// if schema, ok := schemaCache[featuresOrService.FeatureService]; !ok {
// generateLogSchemaFromFeatureService(featuresOrService.FeatureService)
// }

// }

if err != nil {
return nil, err
}
Expand Down
43 changes: 43 additions & 0 deletions go/internal/feast/basefeatureview.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package feast

import (
"fmt"

"github.com/feast-dev/feast/go/protos/feast/core"
)

type BaseFeatureView struct {
name string
features []*Feature
projection *FeatureViewProjection
}

func NewBaseFeatureView(name string, featureProtos []*core.FeatureSpecV2) *BaseFeatureView {
base := &BaseFeatureView{name: name}
features := make([]*Feature, len(featureProtos))
for index, featureSpecV2 := range featureProtos {
features[index] = NewFeatureFromProto(featureSpecV2)
}
base.features = features
base.projection = NewFeatureViewProjectionFromDefinition(base)
return base
}

func (fv *BaseFeatureView) withProjection(projection *FeatureViewProjection) (*BaseFeatureView, error) {
if projection.name != fv.name {
return nil, fmt.Errorf("the projection for the %s FeatureView cannot be applied because it differs "+
"in name; the projection is named %s and the name indicates which "+
"FeatureView the projection is for", fv.name, projection.name)
}
features := make(map[string]bool)
for _, feature := range fv.features {
features[feature.name] = true
}
for _, feature := range projection.Features {
if _, ok := features[feature.name]; !ok {
return nil, fmt.Errorf("the projection for %s cannot be applied because it contains %s which the "+
"FeatureView doesn't have", projection.name, feature.name)
}
}
return &BaseFeatureView{name: fv.name, features: fv.features, projection: projection}, nil
}
6 changes: 0 additions & 6 deletions go/internal/feast/featurestore.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ type Features struct {
// repo config (contents of feature_store.yaml converted to JSON map).
func NewFeatureStore(config *registry.RepoConfig, callback transformation.TransformationCallback) (*FeatureStore, error) {
onlineStore, err := onlinestore.NewOnlineStore(config)
// offlineStore, err := NewOfflineStore(config)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -137,7 +136,6 @@ func (fs *FeatureStore) GetOnlineFeatures(

for _, groupRef := range groupedRefs {
featureData, err := fs.readFromOnlineStore(ctx, groupRef.EntityKeys, groupRef.FeatureViewNames, groupRef.FeatureNames)

if err != nil {
return nil, err
}
Expand Down Expand Up @@ -186,10 +184,6 @@ func (fs *FeatureStore) DestructOnlineStore() {
fs.onlineStore.Destruct()
}

func (fs *FeatureStore) GetRepoConfig() *RepoConfig {
return fs.config
}

// ParseFeatures parses the kind field of a GetOnlineFeaturesRequest protobuf message
// and populates a Features struct with the result.
func (fs *FeatureStore) ParseFeatures(kind interface{}) (*Features, error) {
Expand Down
41 changes: 41 additions & 0 deletions go/internal/feast/featureviewprojection.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package feast

import (
"github.com/feast-dev/feast/go/protos/feast/core"
)

type FeatureViewProjection struct {
name string
nameAlias string
Features []*Feature
JoinKeyMap map[string]string
}

func (fv *FeatureViewProjection) nameToUse() string {
if len(fv.nameAlias) == 0 {
return fv.name
}
return fv.nameAlias
}

func NewFeatureViewProjectionFromProto(proto *core.FeatureViewProjection) *FeatureViewProjection {
featureProjection := &FeatureViewProjection{name: proto.FeatureViewName,
nameAlias: proto.FeatureViewNameAlias,
JoinKeyMap: proto.JoinKeyMap,
}

features := make([]*Feature, len(proto.FeatureColumns))
for index, featureSpecV2 := range proto.FeatureColumns {
features[index] = NewFeatureFromProto(featureSpecV2)
}
featureProjection.Features = features
return featureProjection
}

func NewFeatureViewProjectionFromDefinition(base *BaseFeatureView) *FeatureViewProjection {
return &FeatureViewProjection{name: base.name,
nameAlias: "",
Features: base.features,
JoinKeyMap: make(map[string]string),
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -1094,3 +1094,4 @@ def assert_feature_service_entity_mapping_correctness(
entity_rows=entity_rows,
full_feature_names=full_feature_names,
)
assert(False)