Environments in Rift
This feature is currently in Public Preview.
Environments for Rift-based Feature Views are isolated compute environments where materialization jobs are executed.
Rift-based Feature Views with materialization enabled are required to set the
environment field -- having a pinned environment ensures that Feature Views
and transformation logic run reliably and predictably. This can be set as a
default via your
Repo Config
or via the environment field on a Batch or Stream Feature View.
When creating a Rift-based Feature View, use the latest supported Tecton Environment. If your feature transformation has additional dependencies, create a Custom Python Environment.
Tecton Environmentsโ
Tecton publishes a set of Python Environments that include common feature transformation packages that enable materialization with Rift.
Environments are identified by a name and a version number. The table below lists all available Tecton Environments for Rift-based Feature Views.
| Environment | Date published |
|---|---|
tecton-core-1.1.13 | 2025-07-29 |
tecton-core-1.1.10 | 2025-05-27 |
tecton-core-1.1.8 | 2025-05-06 |
tecton-core-1.1.0 | 2025-01-23 |
tecton-core-1.0.36 | 2025-07-29 |
tecton-rift-core-1.0.13 | 2024-11-07 |
tecton-rift-core-1.0.0 | 2024-09-16 |
tecton-rift-core-0.9.9 | 2024-06-25 |
tecton-rift-core-0.9.7 | 2024-06-15 |
tecton-rift-core-0.9.5 | 2024-05-24 |
tecton-rift-core-0.9.0 | 2024-04-01 |
To view this list from the Tecton CLI, run tecton environment list.
Here is the list of packages included in the tecton-core-1.1.0 environment:
Resolved Dependencies for tecton-core-1.1.0
annotated-types==0.7.0
asn1crypto==1.5.1
attrs==24.3.0
beautifulsoup4==4.12.3
boto3==1.36.1
botocore==1.36.1
cachetools==5.5.0
certifi==2024.12.14
cffi==1.17.1
charset-normalizer==3.4.1
click==8.1.8
cloudpickle==2.2.1
colorama==0.4.6
cryptography==44.0.0
db-dtypes==1.3.1
deltalake==0.18.2
duckdb==1.1.2
exceptiongroup==1.2.2
filelock==3.16.1
fsspec==2024.12.0
google-api-core==2.24.0
google-auth==2.37.0
google-cloud-bigquery==3.27.0
google-cloud-bigquery-storage==2.27.0
google-cloud-core==2.4.1
google-cloud-storage==2.19.0
google-crc32c==1.6.0
google-resumable-media==2.7.2
googleapis-common-protos==1.66.0
grpcio==1.60.0
grpcio-health-checking==1.60.0
grpcio-reflection==1.60.0
grpcio-status==1.60.0
idna==3.10
iniconfig==2.0.0
jinja2==3.1.5
jmespath==1.0.1
lxml==5.3.0
markdown-it-py==3.0.0
markupsafe==3.0.2
mdurl==0.1.2
mmh3==5.0.1
mypy-boto3-glue==1.36.0
numpy==1.26.4
packaging==24.2
pandas==2.2.3
pathspec==0.12.1
pendulum==2.1.2
pex==2.28.1
pip==24.3.1
platformdirs==4.3.6
pluggy==1.5.0
prometheus-client==0.21.1
proto-plus==1.25.0
protobuf==4.25.5
psutil==6.1.1
psycopg==3.2.4
psycopg-binary==3.2.4
py-grpc-prometheus==0.8.0
pyarrow==15.0.2
pyarrow-hotfix==0.6
pyasn1==0.6.1
pyasn1-modules==0.4.1
pycparser==2.22
pydantic==2.10.5
pydantic-core==2.27.2
pygments==2.19.1
pyiceberg==0.8.1
pyjwt==2.10.1
pyopenssl==24.3.0
pyparsing==3.2.1
pypika==0.48.9
pytest==8.3.4
python-dateutil==2.9.0.post0
pytimeparse==1.1.8
pytz==2024.2
pytzdata==2020.1
pyyaml==6.0.2
readerwriterlock==1.0.9
redshift-connector==2.1.5
requests==2.32.3
rich==13.9.4
rsa==4.9
s3transfer==0.11.1
schedule==1.2.2
scramp==1.4.5
semantic-version==2.10.0
setuptools==75.8.0
six==1.17.0
snowflake-connector-python==3.12.4
snowflake-snowpark-python==1.26.0
sortedcontainers==2.4.0
soupsieve==2.6
sqlparse==0.5.3
statsd==4.0.1
strictyaml==1.7.3
tecton==1.1.0rc0
tecton-runtime==1.1.0rc0
tenacity==9.0.0
termcolor==2.5.0
texttable==1.7.0
tomli==2.2.1
tomlkit==0.13.2
tqdm==4.67.1
typeguard==2.13.3
typing-extensions==4.12.2
tzdata==2024.2
tzlocal==5.2
urllib3==1.26.20
uv==0.4.30
wheel==0.45.1
yaspin==2.5.0
Custom Python Environmentsโ
Data pipelines commonly rely on a variety of third-party libraries to help facilitate transformations. With Tecton, users can create custom environments that include dependencies used in Rift-based Feature Views.
Custom environments support Python versions 3.9, 3.10, and 3.11.
The process for creating custom environments is as follows:
- Create a requirements.txt file
- Create a custom environment via the Tecton CLI.
- Set the Feature View
environmentfield to your custom environment name.
Create a requirements.txt Fileโ
Here's an example requirements.txt file that will be referenced in this
tutorial:
# PyPI packages
tecton[rift-materialization]==1.1.1
tecton-runtime==1.1.1
fuzzywuzzy==0.18.0 # extra dependency for custom use-case
To support batch materialization jobs for Batch & Stream Feature Views, the
requirements.txt must include the
tecton[rift-materialization] package pinned
to a specific version.
To support
Realtime Feature Views
and
Ingest API-based Feature Views,
the requirements.txt must include the
tecton-runtime package pinned to a
specific version.
Ensure that tecton[rift-materialization] and tecton-runtime versions are
aligned if using both libraries.
Before creating the custom environment, you can run
tecton environment resolve-dependencies --requirements /path/to/requirements.txt
to see the full list of packages that will be included in the environment and
verify that the new packages are present. Running that command now shows the
list includes fuzzywuzzy:
(...)
fsspec==2025.7.0
# via pyiceberg
# from https://pypi.org/simple
fuzzywuzzy==0.18.0
# via -r requirements.txt
# from https://pypi.org/simple
(...)
Once the list shows all the required dependencies, proceed to creating a custom environment.
Create a Custom Environment via the Tecton CLIโ
To create an environment in Tecton, you can use the
tecton environment create
command.
$ tecton environment create --name "my-custom-env-1-1" --description "My Custom Env 1.1" --requirements /path/to/requirements.txt
๐ก Creating environment 'my-custom-env-1-1' for job types:
โ
Realtime
โ
Rift Batch
โ
Rift Stream Ingest
โณ Resolving dependencies for Python 3.9.17 and architecture x86_64. This may take a few seconds.....
โ
Successfully resolved dependencies
โณ Downloading wheels. This may take a few seconds.....
โณ Uploading compressed wheels in parts to S3. This may take a few seconds.....
Upload progress: 100%|โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ| 9/9 [01:44<00:00, 11.62s/it]
โ
Successfully uploaded dependencies
$ tecton environment get --name "my-custom-env-1-1"
Id Name Description Type Status Materialization Version Tecton Transform Version Created At
==========================================================================================================================================================================
4d9ae95a46373b06a8f0b9ae116a8f7c my-custom-env-1-1 My Custom Env 1.1 CUSTOM READY 1.1.1 1.1.1 2024-01-01 00:51:43 UTC
Use an Environment in a Feature Viewโ
You can specify the environment name in your Feature definition by setting the
environment field.
Below is an example Batch Feature View that uses the fuzzywuzzy package
available in the my-custom-env-0.1 environment.
from data_sources import product_source
from entities import product
from tecton import Attribute, batch_feature_view
from tecton.types import Float64, String, Timestamp
@batch_feature_view(
sources=[product_source],
entities=[product],
mode="pandas",
timestamp_field="timestamp",
features=[
Attribute("product_name", String),
Attribute("similarity_score", Float64),
Attribute("partial_similarity_score", Float64),
],
environment="my-custom-env-0.1",
)
def moch_cheesecake_similarity(product_df):
from fuzzywuzzy import fuzz
baseline = "Mocha Cheesecake Fudge Brownie Bars"
product_df["similarity_score"] = product_df["product_name"].apply(lambda name: fuzz.ratio(name, baseline))
product_df["partial_similarity_score"] = product_df["product_name"].apply(
lambda name: fuzz.partial_ratio(name, baseline)
)
return product_df
Delete an Environmentโ
A custom environment can be deleted via the CLI using the tecton environment delete command. Deletion will fail if the environment is actively being used in a Feature View.
Usage Notes & FAQsโ
Usage Notesโ
- The Admin role is required to delete a custom environment via the Tecton CLI. Regular users can create custom environments.
- Custom environments should be unique across all workspaces and can only contain letters, numbers, hyphens, and underscores.
- Environment creation takes place asynchronously, typically in 2-10 minutes. An
environment should be in
READYstatus before it can be used -- check its status withtecton environment get).
FAQ: How do I resolve dependency resolution errors during environment creation?โ
- These can be caused by conflicting version requirements in the
requirements.txtfile. Run theresolve-dependenciescommand to view the fully resolved set of requirements and identify incompatible version specifications. - Verify that each dependency in the
requirements.txtfile has a.whlfile available for download in PyPI (or any custom Artifactory) for the relevant Python version and x86 architecture. - Tecton uses the
pex
utility to generate the fully resolved dependency set. To inspect the
underlying commands, run the
tecton environment resolve-dependencies --verbose.
FAQ: How do I check which dependencies are available in my custom environment?โ
- Run tecton environment describe to see the input requirements as well as the fully resolved set of dependencies for a custom environment.