{"id":20408740,"url":"https://github.com/feast-dev/feast-custom-provider-demo","last_synced_at":"2025-07-31T02:39:57.175Z","repository":{"id":47540901,"uuid":"398689847","full_name":"feast-dev/feast-custom-provider-demo","owner":"feast-dev","description":null,"archived":false,"fork":false,"pushed_at":"2021-08-23T19:10:47.000Z","size":36,"stargazers_count":3,"open_issues_count":0,"forks_count":7,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-26T10:11:18.439Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/feast-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-08-22T01:32:47.000Z","updated_at":"2024-04-15T15:39:00.000Z","dependencies_parsed_at":"2022-07-23T10:46:36.283Z","dependency_job_id":null,"html_url":"https://github.com/feast-dev/feast-custom-provider-demo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feast-dev%2Ffeast-custom-provider-demo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feast-dev%2Ffeast-custom-provider-demo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feast-dev%2Ffeast-custom-provider-demo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feast-dev%2Ffeast-custom-provider-demo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/feast-dev","download_url":"https://codeload.github.com/feast-dev/feast-custom-provider-demo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248590190,"owners_count":21129765,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-15T05:36:00.730Z","updated_at":"2025-04-12T15:35:51.538Z","avatar_url":"https://github.com/feast-dev.png","language":"Python","readme":"# Feast Custom Provider\n[![test-provider](https://github.com/feast-dev/feast-custom-provider-demo/actions/workflows/test_provider.yml/badge.svg?branch=master)](https://github.com/feast-dev/feast-custom-provider-demo/actions/workflows/test_provider.yml)\n\n### Overview\n\nThis repository demonstrates how developers can create their own custom `providers` for Feast. Custom providers can be\nused like plugins which allow Feast users to execute any custom logic. Typical examples include\n* Launching custom streaming ingestion jobs (Spark, Beam)\n* Launching custom batch ingestion (materialization) jobs (Spark, Beam)\n* Adding custom validation to feature repositories during `feast apply`\n* Adding custom infrastructure setup logic which runs during `feast apply`\n* Extending Feast commands with in-house metrics, logging, or tracing\n\n### Why create a custom provider?\n\nAll Feast operations execute through a provider. Operations like materializing data from the offline to the online\nstore, updating infrastructure like databases, launching streaming ingestion jobs, building training datasets, and\nreading features from the online store.\n\nFeast comes with providers built in, e.g, LocalProvider, GcpProvider, and AwsProvider. However, users can develop their\nown providers by creating a class that implements the contract in the [Provider class](https://github.com/feast-dev/feast/blob/745a1b43d20c0169b675b1f28039854205fb8180/sdk/python/feast/infra/provider.py#L22).\n\nMost developers, however, simply want to add new logic to Feast and don't necessarily want to create a whole provider on\ntheir own. The fastest way to add custom logic to Feast is to extend an existing provider. The most generic\nprovider is the LocalProvider, which contains no custom logic specific to a cloud environment.\n\n### What is included in this repository?\n\n* [feast_custom_provider/](feast_custom_provider): An example of a custom provider, `MyCustomProvider`, which extends the Feast\n`LocalProvider`. This example provider simply prints messages to the console.\n* [basic_feature_repo/](basic_feature_repo): A simple feature repository that is used to test the custom provider. The repository has been configured to use the custom provider as part of it's `feature_store.yaml`\n* [test_custom_provider.py](test_custom_provider.py): A test case that uses `MyCustomProvider` through the `basic_feature_repo/`\n\n### Testing the custom provider in this repository\n\nRun the following commands to test the custom provider ([MyCustomProvider](https://github.com/feast-dev/feast-custom-provider-demo/blob/master/feast_custom_provider/custom_provider.py))\n\n```bash\npip install -r requirements.txt\n```\n\n```\npytest test_custom_provider.py\n```\n\nIt is also possible to run Feast CLI command, which in turn will call the provider. It may be necessary to add the \n`PYTHONPATH` to the path where your provider module is stored.\n```\nPYTHONPATH=$PYTHONPATH:/$(pwd) feast -c basic_feature_repo apply\n```\n```\nRegistered entity driver_id\nRegistered feature view driver_hourly_stats\nDeploying infrastructure for driver_hourly_stats\nLaunching custom streaming jobs is pretty easy...\n```","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffeast-dev%2Ffeast-custom-provider-demo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffeast-dev%2Ffeast-custom-provider-demo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffeast-dev%2Ffeast-custom-provider-demo/lists"}