Skip to content

Snowflake Registry does not work #5204

@qianyao11

Description

@qianyao11

Expected Behavior

when setting registry_type: snowflake.registry, i would expect it creates corresponding tables in specified snowflake database, and add defined entities / views etc. to the tables.
https://docs.feast.dev/reference/registries/snowflake
registry:
registry_type: snowflake.registry
account: snowflake_deployment.us-east-1
user: user_login
password: user_password
role: SYSADMIN
warehouse: COMPUTE_WH
database: FEAST
schema: PUBLIC
cache_ttl_seconds: 60

Current Behavior

when run feast apply, i get error as below when creating snowflake registry tables (all tables are created already though, seems like there is an extra ':' at the end of the provided .sql receipt for snowflake registry ):

(test_feast) macuser@Mac test_feast % feast apply

/Users/macuser/miniconda3/envs/test_feast/lib/python3.10/site-packages/pydantic/_internal/_fields.py:198: UserWarning: Field name "vector_enabled" in "SqliteOnlineStoreConfig" shadows an attribute in parent "VectorStoreConfig"
  warnings.warn(
/Users/macuser/miniconda3/envs/test_feast/lib/python3.10/site-packages/pydantic/_internal/_fields.py:198: UserWarning: Field name "vector_len" in "SqliteOnlineStoreConfig" shadows an attribute in parent "VectorStoreConfig"
  warnings.warn(
/Users/macuser/Desktop/Pilot/test_feast/example_repo.py:27: DeprecationWarning: Entity value_type will be mandatory in the next release. Please specify a value_type for entity 'driver'.
  driver = Entity(name="driver", join_keys=["driver_id"])
**Traceback** (most recent call last):
  File "/Users/macuser/miniconda3/envs/test_feast/bin/feast", line 8, in <module>
    sys.exit(cli())
  File "/Users/macuser/miniconda3/envs/test_feast/lib/python3.10/site-packages/click/core.py", line 1161, in __call__
    return self.main(*args, **kwargs)
  File "/Users/macuser/miniconda3/envs/test_feast/lib/python3.10/site-packages/click/core.py", line 1082, in main
    rv = self.invoke(ctx)
  File "/Users/macuser/miniconda3/envs/test_feast/lib/python3.10/site-packages/click/core.py", line 1697, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/macuser/miniconda3/envs/test_feast/lib/python3.10/site-packages/click/core.py", line 1443, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/macuser/miniconda3/envs/test_feast/lib/python3.10/site-packages/click/core.py", line 788, in invoke
    return __callback(*args, **kwargs)
  File "/Users/macuser/miniconda3/envs/test_feast/lib/python3.10/site-packages/click/decorators.py", line 33, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/Users/macuser/miniconda3/envs/test_feast/lib/python3.10/site-packages/feast/cli.py", line 778, in apply_total_command
    apply_total(repo_config, repo, skip_source_validation)
  File "/Users/macuser/miniconda3/envs/test_feast/lib/python3.10/site-packages/feast/repo_operations.py", line 396, in apply_total
    store, registry = _get_store_and_registry(repo_config)
  File "/Users/macuser/miniconda3/envs/test_feast/lib/python3.10/site-packages/feast/repo_operations.py", line 274, in _get_store_and_registry
    store = FeatureStore(config=repo_config)
  File "/Users/macuser/miniconda3/envs/test_feast/lib/python3.10/site-packages/feast/feature_store.py", line 160, in __init__
    self._registry = SnowflakeRegistry(
  File "/Users/macuser/miniconda3/envs/test_feast/lib/python3.10/site-packages/feast/infra/registry/snowflake.py", line 146, in __init__
    execute_snowflake_statement(conn, query)
  File "/Users/macuser/miniconda3/envs/test_feast/lib/python3.10/site-packages/feast/infra/utils/snowflake/snowflake_utils.py", line 128, in execute_snowflake_statement
    raise SnowflakeQueryUnknownError(query)
feast.errors.SnowflakeQueryUnknownError: Snowflake query failed: 

Steps to reproduce

conda create --name testenv
conda install python==3.10
pip install 'feast[snowflake]'
feast init
cd 'project_name'
feast apply

Specifications

  • Version:
Python 3.10.16
feast                      0.47.0
  • Platform:
    got same issue on MacBook and windows.
  • Subsystem:

Possible Solution

if i manually remove the ':' in feast lib in my local environment for file feast/infra/utils/snowflake/registry/snowflake_table_creation.sql, there will be a different error for feast apply:

  File "/Users/macuser/miniconda3/envs/test_feast/lib/python3.10/site-packages/feast/infra/registry/snowflake.py", line 176, in _sync_feast_metadata_to_projects_table
    feast_metadata_projects.add(row[1]["PROJECT_ID"])
AttributeError: 'list' object has no attribute 'add'

if i change line 166 and 167 in infra.registry.snowflake.py
into

    def _sync_feast_metadata_to_projects_table(self):
        feast_metadata_projects: set = set()
        projects_set: set = set()

it will give me a new error:

KeyError: 'project_proto'

if i change line 1360 in infra.registry.snowflake.py to ProjectProto.FromString(row[1]["PROJECT_PROTO"]) instead of ProjectProto.FromString(row[1]["project_proto"]) will get a different error
AttributeError: 'SnowflakeRegistry' object has no attribute '_refresh_lock'

Then i stop trying.

Am i using the snowflake registry in the right way? and guidance is appreciated.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions