$ feast init feature_repo
Creating a new Feast repository in /home/tsotne/feast/feature_repo.
$ cd feature_repo
$ feast apply
Created entity driver
Created feature view driver_hourly_stats
Created feature service driver_activity
Created sqlite table feature_repo_driver_hourly_stats
$ feast materialize-incremental $(date +%Y-%m-%d)
Materializing 1 feature views to 2021-09-09 17:00:00-07:00 into the sqlite online store.
driver_hourly_stats from 2021-09-09 16:51:08-07:00 to 2021-09-09 17:00:00-07:00:
100%|ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ| 5/5 [00:00<00:00, 295.24it/s]
$ feast serve
09/10/2021 10:42:11 AM INFO:Started server process [8889]
INFO: Waiting for application startup.
09/10/2021 10:42:11 AM INFO:Waiting for application startup.
INFO: Application startup complete.
09/10/2021 10:42:11 AM INFO:Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:6566 (Press CTRL+C to quit)
09/10/2021 10:42:11 AM INFO:Uvicorn running on http://127.0.0.1:6566 (Press CTRL+C to quit)$ curl -X POST \
"http://localhost:6566/get-online-features" \
-d '{
"features": [
"driver_hourly_stats:conv_rate",
"driver_hourly_stats:acc_rate",
"driver_hourly_stats:avg_daily_trips"
],
"entities": {
"driver_id": [1001, 1002, 1003]
}
}' | jq
{
"metadata": {
"feature_names": [
"driver_id",
"conv_rate",
"avg_daily_trips",
"acc_rate"
]
},
"results": [
{
"values": [
1001,
0.7037263512611389,
308,
0.8724706768989563
],
"statuses": [
"PRESENT",
"PRESENT",
"PRESENT",
"PRESENT"
],
"event_timestamps": [
"1970-01-01T00:00:00Z",
"2021-12-31T23:00:00Z",
"2021-12-31T23:00:00Z",
"2021-12-31T23:00:00Z"
]
},
{
"values": [
1002,
0.038169607520103455,
332,
0.48534533381462097
],
"statuses": [
"PRESENT",
"PRESENT",
"PRESENT",
"PRESENT"
],
"event_timestamps": [
"1970-01-01T00:00:00Z",
"2021-12-31T23:00:00Z",
"2021-12-31T23:00:00Z",
"2021-12-31T23:00:00Z"
]
},
{
"values": [
1003,
0.9665873050689697,
779,
0.7793770432472229
],
"statuses": [
"PRESENT",
"PRESENT",
"PRESENT",
"PRESENT"
],
"event_timestamps": [
"1970-01-01T00:00:00Z",
"2021-12-31T23:00:00Z",
"2021-12-31T23:00:00Z",
"2021-12-31T23:00:00Z"
]
}
]
}curl -X POST \
"http://localhost:6566/get-online-features" \
-d '{
"feature_service": <feature-service-name>,
"entities": {
"driver_id": [1001, 1002, 1003]
}
}' | jqcurl -X POST "http://localhost:6566/push" -d '{
"push_source_name": "driver_hourly_stats_push_source",
"df": {
"driver_id": [1001],
"event_timestamp": ["2022-05-13 10:59:42"],
"created": ["2022-05-13 10:59:42"],
"conv_rate": [1.0],
"acc_rate": [1.0],
"avg_daily_trips": [1000]
},
"to": "online_and_offline",
}' | jqimport json
import requests
import pandas as pd
from datetime import datetime
event_dict = {
"driver_id": [1001],
"event_timestamp": [str(datetime(2021, 5, 13, 10, 59, 42))],
"created": [str(datetime(2021, 5, 13, 10, 59, 42))],
"conv_rate": [1.0],
"acc_rate": [1.0],
"avg_daily_trips": [1000],
"string_feature": "test2",
}
push_data = {
"push_source_name":"driver_stats_push_source",
"df":event_dict,
"to":"online",
}
requests.post(
"http://localhost:6566/push",
data=json.dumps(push_data))project: my_feature_repo
registry: data/registry.db
provider: local
online_store:
type: redis
connection_string: "localhost:6379"
go_feature_serving: Truepip install feast[go]sudo apt update
sudo apt install -y -V ca-certificates lsb-release wget
wget https://apache.jfrog.io/artifactory/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
sudo apt install -y -V ./apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
sudo apt update
sudo apt install -y -V libarrow-dev # For C++project: my_feature_repo
registry: data/registry.db
provider: local
online_store:
type: redis
connection_string: "localhost:6379"
go_feature_serving: True
feature_server:
feature_logging:
enabled: Truefeature_server:
feature_logging:
enabled: True
flush_interval_secs: 300
write_to_disk_interval_secs: 30
emit_timeout_micro_secs: 10000
queue_capacity: 10000project: dev
registry: s3://feast/registries/dev
provider: aws
online_store:
region: us-west-2
offline_store:
cluster_id: feast
region: us-west-2
user: admin
database: feast
s3_staging_location: s3://feast/redshift/tests/staging_location
iam_role: arn:aws:iam::{aws_account}:role/redshift_s3_access_role
feature_server:
enabled: True
execution_role_name: arn:aws:iam::{aws_account}:role/lambda_execution_role{
"Statement": [
{
Action = [
"lambda:CreateFunction",
"lambda:GetFunction",
"lambda:DeleteFunction",
"lambda:AddPermission",
"lambda:UpdateFunctionConfiguration",
]
Effect = "Allow"
Resource = "arn:aws:lambda:<region>:<account_id>:function:feast-*"
},
{
Action = [
"ecr:CreateRepository",
"ecr:DescribeRepositories",
"ecr:DeleteRepository",
"ecr:PutImage",
"ecr:DescribeImages",
"ecr:BatchDeleteImage",
"ecr:CompleteLayerUpload",
"ecr:UploadLayerPart",
"ecr:InitiateLayerUpload",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:GetRepositoryPolicy",
"ecr:SetRepositoryPolicy",
"ecr:GetAuthorizationToken"
]
Effect = "Allow"
Resource = "*"
},
{
Action = "iam:PassRole"
Effect = "Allow"
Resource = "arn:aws:iam::<account_id>:role/<lambda-execution-role-name>"
},
{
Effect = "Allow"
Action = "apigateway:*"
Resource = [
"arn:aws:apigateway:*::/apis/*/routes/*/routeresponses",
"arn:aws:apigateway:*::/apis/*/routes/*/routeresponses/*",
"arn:aws:apigateway:*::/apis/*/routes/*",
"arn:aws:apigateway:*::/apis/*/routes",
"arn:aws:apigateway:*::/apis/*/integrations",
"arn:aws:apigateway:*::/apis/*/stages/*/routesettings/*",
"arn:aws:apigateway:*::/apis/*",
"arn:aws:apigateway:*::/apis",
]
},
],
"Version": "2012-10-17"
}$ feast apply
10/07/2021 03:57:26 PM INFO:Pulling remote image feastdev/feature-server-python-aws:aws:
10/07/2021 03:57:28 PM INFO:Creating remote ECR repository feast-python-server-key_shark-0_13_1_dev23_gb3c08320:
10/07/2021 03:57:29 PM INFO:Pushing local image to remote 402087665549.dkr.ecr.us-west-2.amazonaws.com/feast-python-server-key_shark-0_13_1_dev23_gb3c08320:0_13_1_dev23_gb3c08320:
10/07/2021 03:58:44 PM INFO:Deploying feature server...
10/07/2021 03:58:45 PM INFO: Creating AWS Lambda...
10/07/2021 03:58:46 PM INFO: Creating AWS API Gateway...
Registered entity driver_id
Registered feature view driver_hourly_stats
Deploying infrastructure for driver_hourly_stats
$ feast endpoint
10/07/2021 03:59:01 PM INFO:Feature server endpoint: https://hkosgmz4m2.execute-api.us-west-2.amazonaws.com
$ feast materialize-incremental $(date +%Y-%m-%d)
Materializing 1 feature views to 2021-10-06 17:00:00-07:00 into the dynamodb online store.
driver_hourly_stats from 2020-10-08 23:01:34-07:00 to 2021-10-06 17:00:00-07:00:
100%|βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ| 5/5 [00:00<00:00, 16.89it/s]$ curl -X POST \
"https://hkosgmz4m2.execute-api.us-west-2.amazonaws.com/get-online-features" \
-H "Content-type: application/json" \
-H "Accept: application/json" \
-d '{
"features": [
"driver_hourly_stats:conv_rate",
"driver_hourly_stats:acc_rate",
"driver_hourly_stats:avg_daily_trips"
],
"entities": {
"driver_id": [1001, 1002, 1003]
},
"full_feature_names": true
}' | jq
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1346 100 1055 100 291 3436 947 --:--:-- --:--:-- --:--:-- 4370
{
"field_values": [
{
"fields": {
"driver_id": 1001,
"driver_hourly_stats__conv_rate": 0.025330161675810814,
"driver_hourly_stats__avg_daily_trips": 785,
"driver_hourly_stats__acc_rate": 0.835975170135498
},
"statuses": {
"driver_hourly_stats__avg_daily_trips": "PRESENT",
"driver_id": "PRESENT",
"driver_hourly_stats__conv_rate": "PRESENT",
"driver_hourly_stats__acc_rate": "PRESENT"
}
},
{
"fields": {
"driver_hourly_stats__conv_rate": 0.7595187425613403,
"driver_hourly_stats__acc_rate": 0.1740121990442276,
"driver_id": 1002,
"driver_hourly_stats__avg_daily_trips": 875
},
"statuses": {
"driver_hourly_stats__acc_rate": "PRESENT",
"driver_id": "PRESENT",
"driver_hourly_stats__avg_daily_trips": "PRESENT",
"driver_hourly_stats__conv_rate": "PRESENT"
}
},
{
"fields": {
"driver_hourly_stats__acc_rate": 0.7785481214523315,
"driver_hourly_stats__conv_rate": 0.33832859992980957,
"driver_hourly_stats__avg_daily_trips": 846,
"driver_id": 1003
},
"statuses": {
"driver_id": "PRESENT",
"driver_hourly_stats__conv_rate": "PRESENT",
"driver_hourly_stats__acc_rate": "PRESENT",
"driver_hourly_stats__avg_daily_trips": "PRESENT"
}
}
]
}