diff --git a/docs/reference/online-stores/README.md b/docs/reference/online-stores/README.md index 792d1b9553..64b707a7e5 100644 --- a/docs/reference/online-stores/README.md +++ b/docs/reference/online-stores/README.md @@ -42,7 +42,7 @@ Please see [Online Store](../../getting-started/architecture-and-components/onli [mysql.md](mysql.md) {% endcontent-ref %} -{% content-ref url="mysql.md" %} +{% content-ref url="rockset.md" %} [rockset.md](rockset.md) {% endcontent-ref %} diff --git a/docs/reference/online-stores/rockset.md b/docs/reference/online-stores/rockset.md index 0ffb29a2d4..523bf9a9a1 100644 --- a/docs/reference/online-stores/rockset.md +++ b/docs/reference/online-stores/rockset.md @@ -4,12 +4,12 @@ In Alpha Development. -The [Rockset](https://rockset.com/demo-signup/) online store provides support for materializing feature values within a Rockset collection for serving online features in real-time. +The [Rockset](https://rockset.com/demo-signup/) online store provides support for materializing feature values within a Rockset collection in order to serve features in real-time. * Each document is uniquely identified by its '_id' value. Repeated inserts into the same document '_id' will result in an upsert. -Rockset indexes all columns allowing for quick per feature look up and also allows for a dynamic typed schema that can change based on any new requirements. ApiKeys can be found in the console -along with host urls which you can find in "View Region Endpoint Urls". +Rockset indexes all columns allowing for quick per feature look up and also allows for a dynamic typed schema that can change based on any new requirements. API Keys can be found in the Rockset console. +You can also find host urls on the same tab by clicking "View Region Endpoint Urls". Data Model Used Per Doc @@ -32,7 +32,53 @@ project: my_feature_app registry: data/registry.db provider: local online_stores + ## Basic Configs ## + + # If apikey or host is left blank the driver will try to pull + # these values from environment variables ROCKSET_APIKEY and + # ROCKSET_APISERVER respectively. type: rockset - apikey: MY_APIKEY_HERE - host: api.usw2a1.rockset.com + apikey: + host: + + ## Advanced Configs ## + + # Batch size of records that will be turned per page when + # paginating a batched read. + # + # read_pagination_batch_size: 100 + + # The amount of time, in seconds, we will wait for the + # collection to become visible to the API. + # + # collection_created_timeout_secs: 60 + + # The amount of time, in seconds, we will wait for the + # collection to enter READY state. + # + # collection_ready_timeout_secs: 1800 + + # Whether to wait for all writes to be flushed from log + # and queryable before returning write as completed. If + # False, documents that are written may not be seen + # immediately in subsequent reads. + # + # fence_all_writes: True + + # The amount of time we will wait, in seconds, for the + # write fence to be passed + # + # fence_timeout_secs: 600 + + # Initial backoff, in seconds, we will wait between + # requests when polling for a response. + # + # initial_request_backoff_secs: 2 + + # Initial backoff, in seconds, we will wait between + # requests when polling for a response. + # max_request_backoff_secs: 30 + + # The max amount of times we will retry a failed request. + # max_request_attempts: 10000 ``` diff --git a/sdk/python/feast/cli.py b/sdk/python/feast/cli.py index b028465492..1606f52831 100644 --- a/sdk/python/feast/cli.py +++ b/sdk/python/feast/cli.py @@ -631,7 +631,17 @@ def materialize_incremental_command(ctx: click.Context, end_ts: str, views: List "--template", "-t", type=click.Choice( - ["local", "gcp", "aws", "snowflake", "spark", "postgres", "hbase", "cassandra"], + [ + "local", + "gcp", + "aws", + "snowflake", + "spark", + "postgres", + "hbase", + "cassandra", + "rockset", + ], case_sensitive=False, ), help="Specify a template for the created project", diff --git a/sdk/python/feast/repo_config.py b/sdk/python/feast/repo_config.py index 5430d557bb..f0c94822af 100644 --- a/sdk/python/feast/repo_config.py +++ b/sdk/python/feast/repo_config.py @@ -217,6 +217,8 @@ def __init__(self, **data: Any): self._online_config = "datastore" elif data["provider"] == "aws": self._online_config = "dynamodb" + elif data["provider"] == "rockset": + self._online_config = "rockset" self._batch_engine = None if "batch_engine" in data: diff --git a/sdk/python/feast/templates/rockset/bootstrap.py b/sdk/python/feast/templates/rockset/bootstrap.py index ad9c8a5f80..a3dc17f18e 100644 --- a/sdk/python/feast/templates/rockset/bootstrap.py +++ b/sdk/python/feast/templates/rockset/bootstrap.py @@ -13,11 +13,13 @@ def bootstrap(): data_path.mkdir(exist_ok=True) rockset_apikey = click.prompt( - "Rockset Api Key (If blank will be read from ROCKSET_APIKEY in ENV):" + "Rockset Api Key (If blank will be read from ROCKSET_APIKEY in ENV):", + default="", ) rockset_host = click.prompt( - "Rockset Host (If blank will be read from ROCKSET_APISERVER in ENV):" + "Rockset Host (If blank will be read from ROCKSET_APISERVER in ENV):", + default="", ) replace_str_in_file(config_file, "ROCKSET_APIKEY", rockset_apikey)