feat: Implement spark materialization engine#3184
Conversation
Signed-off-by: niklasvm <niklasvm@gmail.com>
Signed-off-by: niklasvm <niklasvm@gmail.com>
Codecov ReportBase: 67.02% // Head: 58.28% // Decreases project coverage by
Additional details and impacted files@@ Coverage Diff @@
## master #3184 +/- ##
==========================================
- Coverage 67.02% 58.28% -8.74%
==========================================
Files 175 210 +35
Lines 15942 17689 +1747
==========================================
- Hits 10685 10310 -375
- Misses 5257 7379 +2122
Flags with carried forward coverage won't be shown. Click here to find out more.
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. ☔ View full report at Codecov. |
Sorry, something went wrong.
Signed-off-by: niklasvm <niklasvm@gmail.com>
Signed-off-by: niklasvm <niklasvm@gmail.com>
Signed-off-by: niklasvm <niklasvm@gmail.com>
Signed-off-by: niklasvm <niklasvm@gmail.com>
Signed-off-by: niklasvm <niklasvm@gmail.com>
Signed-off-by: niklasvm <niklasvm@gmail.com>
Signed-off-by: niklasvm <niklasvm@gmail.com>
Signed-off-by: niklasvm <niklasvm@gmail.com>
Signed-off-by: niklasvm <niklasvm@gmail.com>
Signed-off-by: niklasvm <niklasvm@gmail.com>
Signed-off-by: niklasvm <niklasvm@gmail.com>
|
@niklasvm Can you fix integration tests? We are also waiting on this PR and would like to use it. Did you get a chance to test it on a cluster? Feast would have to be provided to worker nodes since it deserializes config. We can have example how to do it. |
Sorry, something went wrong.
@ckarwicki I didn't realise the integration test failed. It looks like the issue is related to the I have not tested this on a cluster, only in spark local mode. What type of cluster are you using? |
Sorry, something went wrong.
Signed-off-by: niklasvm <niklasvm@gmail.com>
Signed-off-by: niklasvm <niklasvm@gmail.com>
Signed-off-by: niklasvm <niklasvm@gmail.com>
Sorry, something went wrong.
|
I'm also looking forward to use this! |
Sorry, something went wrong.
|
@adchia what is left before this can be merged. I see there is one test failing however the failures are unrelated to this PR |
Sorry, something went wrong.
adchia
left a comment
There was a problem hiding this comment.
/lgtm
Sorry, something went wrong.
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: adchia, niklasvm The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
Sorry, something went wrong.
# [0.25.0](v0.24.0...v0.25.0) (2022-09-20) ### Bug Fixes * Broken Feature Service Link ([#3227](#3227)) ([e117082](e117082)) * Feature-server image is missing mysql dependency for mysql registry ([#3223](#3223)) ([ae37b20](ae37b20)) * Fix handling of TTL in Go server ([#3232](#3232)) ([f020630](f020630)) * Fix materialization when running on Spark cluster. ([#3166](#3166)) ([175fd25](175fd25)) * Fix push API to respect feature view's already inferred entity types ([#3172](#3172)) ([7c50ab5](7c50ab5)) * Fix release workflow ([#3144](#3144)) ([20a9dd9](20a9dd9)) * Fix Shopify timestamp bug and add warnings to help with debugging entity registration ([#3191](#3191)) ([de75971](de75971)) * Handle complex Spark data types in SparkSource ([#3154](#3154)) ([5ddb83b](5ddb83b)) * Local staging location provision ([#3195](#3195)) ([cdf0faf](cdf0faf)) * Remove bad snowflake offline store method ([#3204](#3204)) ([dfdd0ca](dfdd0ca)) * Remove opening file object when validating S3 parquet source ([#3217](#3217)) ([a906018](a906018)) * Snowflake config file search error ([#3193](#3193)) ([189afb9](189afb9)) * Update Snowflake Online docs ([#3206](#3206)) ([7bc1dff](7bc1dff)) ### Features * Add `to_remote_storage` functionality to `SparkOfflineStore` ([#3175](#3175)) ([2107ce2](2107ce2)) * Add ability to give boto extra args for registry config ([#3219](#3219)) ([fbc6a2c](fbc6a2c)) * Add health endpoint to py server ([#3202](#3202)) ([43222f2](43222f2)) * Add snowflake support for date & number with scale ([#3148](#3148)) ([50e8755](50e8755)) * Add tag kwarg to set Snowflake online store table path ([#3176](#3176)) ([39aeea3](39aeea3)) * Add workgroup to athena offline store config ([#3139](#3139)) ([a752211](a752211)) * Implement spark materialization engine ([#3184](#3184)) ([a59c33a](a59c33a))
What this PR does / why we need it:
Implement
SparkMaterializationEnginewhich parallelizes writing to the online store across spark executors. This introduces asparkbatch engine type.How
foreachPartitionis called on the spark data frame. Each partition of data is processed on the worker nodes.Usage
The
SparkMaterializationEngineis intended to only work with theSparkOfflineStoreand an online store that supports parallel writes (not sqlite).e.g. feature_store.yaml:
Some considerations
spark.offlineandspark.engine?Unit and integration tests are running successfully however this process should be tested on a larger set of data to ensure parallelization is working appropriately.
Which issue(s) this PR fixes:
Fixes #3167