Title: Add Cassandra Store by smadarasmi · Pull Request #360 · feast-dev/feast · GitHub
Open Graph Title: Add Cassandra Store by smadarasmi · Pull Request #360 · feast-dev/feast
X Title: Add Cassandra Store by smadarasmi · Pull Request #360 · feast-dev/feast
Description: Notes/Comments: Cassandra's table name is required to be declared along with the object mapper with the @table annotation. I've left table_name as a field in CassandraConfig for use in Serving module. If user registers cassandra config with a different table name (not "feature_store"), this will throw an exception. Downgraded Guava to 25. Beam 2.16 uses Cassandra 3.4.0 (So we cannot use Cassandra 4.x which shades Guava) Cassandra 3.4.0 uses Guava version 16.0 but has a compatibility check to use a different class when we use version > 19.0. Guava version 26 (one used in Feast) has breaking change to method used in compatibility check in Cassandra's dependency, hence version 25 Aware that there are duplicate code between core and serving. I think that should be solved in a different PR to introduce a common module A default TTL is set when registering Cassandra store (so records are not there forever) Please note: TTL seems to not currently be set for Redis : https://github.com/gojek/feast/blob/master/ingestion/src/main/java/feast/store/serving/redis/FeatureRowToRedisMutationDoFn.java#L66 This PR handles out of order ingestion to Cassandra by setting the write time as the event_timestamp so older records will get a tombstone if newer records with the same primary key exists. Aware that this solution does not work for all serving stores but we need this until there is a generic way to handle out of order arrivals. I've refactored common code for Serving to OnlineServingService. Redis implementation will have complete tests, but Cassandra will not as those should already be covered in Redis since both extends OnlineServingService. Integration test and unit tests are currently mixed. I think that should be a separate PR anyway since there are already existing integration tests in Feast and to avoid this PR having more changes than it is already introducing. I also explored mocking Cassandra responses to write unit test, but I don't think it is worth the effort and even provides much usefulness. Mocking Cassandra's Session and ResultSet will be a pain /cc @ches
Open Graph Description: Notes/Comments: Cassandra's table name is required to be declared along with the object mapper with the @table annotation. I've left table_name as a field in CassandraConfig for use in Ser...
X Description: Notes/Comments: Cassandra's table name is required to be declared along with the object mapper with the @table annotation. I've left table_name as a field in CassandraConfig for us...
Opengraph URL: https://github.com/feast-dev/feast/pull/360
X: @github
Domain: github.com
| route-pattern | /:user_id/:repository/pull/:id/files(.:format) |
| route-controller | pull_requests |
| route-action | files |
| fetch-nonce | v2:ae2b04a0-821d-c3a0-ee76-b2d0beb08e40 |
| current-catalog-service-hash | ae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b |
| request-id | 8B4E:2B3321:2D358F6:3FB72B2:697915C5 |
| html-safe-nonce | 881d3e43b60f937d469c230c50fd18b081000076750e1be2187c84d7658efbca |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4QjRFOjJCMzMyMToyRDM1OEY2OjNGQjcyQjI6Njk3OTE1QzUiLCJ2aXNpdG9yX2lkIjoiNTgzMjQ2OTE0MDY5Nzk2MjkzIiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | 65bc0c5ecc425d25f3f01c3628db169c6fc33817da918c1dabd069ad2dcae7a5 |
| hovercard-subject-tag | pull_request:352034769 |
| github-keyboard-shortcuts | repository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/feast-dev/feast/pull/360/files |
| twitter:image | https://avatars.githubusercontent.com/u/23423749?s=400&v=4 |
| twitter:card | summary_large_image |
| og:image | https://avatars.githubusercontent.com/u/23423749?s=400&v=4 |
| og:image:alt | Notes/Comments: Cassandra's table name is required to be declared along with the object mapper with the @table annotation. I've left table_name as a field in CassandraConfig for use in Ser... |
| og:site_name | GitHub |
| og:type | object |
| hostname | github.com |
| expected-hostname | github.com |
| None | db675ffbe86f3a08023aaf76f083fc7f65e074708cdc617650b84119176f1009 |
| turbo-cache-control | no-preview |
| diff-view | unified |
| go-import | github.com/feast-dev/feast git https://github.com/feast-dev/feast.git |
| octolytics-dimension-user_id | 57027613 |
| octolytics-dimension-user_login | feast-dev |
| octolytics-dimension-repository_id | 161133770 |
| octolytics-dimension-repository_nwo | feast-dev/feast |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 161133770 |
| octolytics-dimension-repository_network_root_nwo | feast-dev/feast |
| turbo-body-classes | logged-out env-production page-responsive full-width |
| disable-turbo | true |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 3e6c9f597d227b0490794716e8b9dddd21a41ead |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width