Funkciótáblák kezelése a munkaterület funkciótárolójában
Feljegyzés
Ez a dokumentáció a munkaterület funkciótárolóját ismerteti. A Databricks a Szolgáltatásfejlesztés használatát javasolja a Unity Catalogban. A munkaterület funkciótárolója a jövőben megszűnik.
Ez a lap bemutatja, hogyan hozhat létre és dolgozhat szolgáltatástáblákkal a Munkaterület funkciótárolójában.
Feljegyzés
Ha a munkaterület engedélyezve van a Unity Cataloghoz, a Unity Catalog által kezelt, elsődleges kulccsal rendelkező táblák automatikusan olyan funkciótáblák, amelyeket a modell betanításához és következtetéséhez használhat. A Unity Catalog összes képessége, például a biztonság, a vonalvezetés, a címkézés és a munkaterületek közötti hozzáférés automatikusan elérhető a funkciótáblában. A funkciótáblák Unity-katalógussal kompatibilis munkaterületen való használatával kapcsolatos további információkért lásd : Funkciótáblák használata.
A szolgáltatás-leállás és a frissesség nyomon követésével kapcsolatos információkért lásd a funkciók felderítését és a funkciósor nyomon követését ismertető témakört.
Feljegyzés
Az adatbázis- és funkciótáblák nevei csak alfanumerikus karaktereket és aláhúzásjeleket (_) tartalmazhatnak.
Adatbázis létrehozása funkciótáblákhoz
A funkciótáblák létrehozása előtt létre kell hoznia egy adatbázist a tárolásukhoz.
%sql CREATE DATABASE IF NOT EXISTS <database-name>
A funkciótáblák Delta-táblákként vannak tárolva. Ha szolgáltatástáblát hoz létre a (Feature Store-ügyfél 0.3.6-os vagy újabb verziójával create_table
) vagy create_feature_table
(0.3.5-ös vagy újabb verzióval), meg kell adnia az adatbázis nevét. Ez az argumentum például létrehoz egy Delta-táblát customer_features
az adatbázisban recommender_system
.
name='recommender_system.customer_features'
Amikor egy szolgáltatástáblát egy online áruházban tesz közzé, az alapértelmezett tábla és az adatbázis neve lesz megadva a tábla létrehozásakor; a metódussal publish_table
különböző neveket adhat meg.
A Databricks szolgáltatástároló felhasználói felülete megjeleníti az online áruházban található tábla és adatbázis nevét, valamint egyéb metaadatokat.
Szolgáltatástábla létrehozása a Databricks Szolgáltatástárban
Feljegyzés
Egy meglévő Delta-táblát funkciótáblaként is regisztrálhat. Lásd: Meglévő Delta-tábla regisztrálása funkciótábláként.
A funkciótáblák létrehozásának alapvető lépései a következők:
- Írja meg a Python-függvényeket a funkciók kiszámításához. Az egyes függvények kimenetének egyedi elsődleges kulccsal rendelkező Apache Spark DataFrame-nek kell lennie. Az elsődleges kulcs egy vagy több oszlopból állhat.
- Hozzon létre egy szolgáltatástáblát a
FeatureStoreClient
(0.3.6-os vagy újabb) vagycreate_feature_table
(0.3.5-ös vagy újabb) példányosításávalcreate_table
. - Töltse ki a funkciótáblát a következővel
write_table
: .
Az alábbi példákban használt parancsokkal és paraméterekkel kapcsolatos részletekért tekintse meg a Feature Store Python API-referenciáját.
V0.3.6 és újabb verziók
from databricks.feature_store import feature_table
def compute_customer_features(data):
''' Feature computation code returns a DataFrame with 'customer_id' as primary key'''
pass
# create feature table keyed by customer_id
# take schema from DataFrame output by compute_customer_features
from databricks.feature_store import FeatureStoreClient
customer_features_df = compute_customer_features(df)
fs = FeatureStoreClient()
customer_feature_table = fs.create_table(
name='recommender_system.customer_features',
primary_keys='customer_id',
schema=customer_features_df.schema,
description='Customer features'
)
# An alternative is to use `create_table` and specify the `df` argument.
# This code automatically saves the features to the underlying Delta table.
# customer_feature_table = fs.create_table(
# ...
# df=customer_features_df,
# ...
# )
# To use a composite key, pass all keys in the create_table call
# customer_feature_table = fs.create_table(
# ...
# primary_keys=['customer_id', 'date'],
# ...
# )
# Use write_table to write data to the feature table
# Overwrite mode does a full refresh of the feature table
fs.write_table(
name='recommender_system.customer_features',
df = customer_features_df,
mode = 'overwrite'
)
V0.3.5 és újabb
from databricks.feature_store import feature_table
def compute_customer_features(data):
''' Feature computation code returns a DataFrame with 'customer_id' as primary key'''
pass
# create feature table keyed by customer_id
# take schema from DataFrame output by compute_customer_features
from databricks.feature_store import FeatureStoreClient
customer_features_df = compute_customer_features(df)
fs = FeatureStoreClient()
customer_feature_table = fs.create_feature_table(
name='recommender_system.customer_features',
keys='customer_id',
schema=customer_features_df.schema,
description='Customer features'
)
# An alternative is to use `create_feature_table` and specify the `features_df` argument.
# This code automatically saves the features to the underlying Delta table.
# customer_feature_table = fs.create_feature_table(
# ...
# features_df=customer_features_df,
# ...
# )
# To use a composite key, pass all keys in the create_feature_table call
# customer_feature_table = fs.create_feature_table(
# ...
# keys=['customer_id', 'date'],
# ...
# )
# Use write_table to write data to the feature table
# Overwrite mode does a full refresh of the feature table
fs.write_table(
name='recommender_system.customer_features',
df = customer_features_df,
mode = 'overwrite'
)from databricks.feature_store import feature_table
def compute_customer_features(data):
''' Feature computation code returns a DataFrame with 'customer_id' as primary key'''
pass
# create feature table keyed by customer_id
# take schema from DataFrame output by compute_customer_features
from databricks.feature_store import FeatureStoreClient
customer_features_df = compute_customer_features(df)
fs = FeatureStoreClient()
customer_feature_table = fs.create_feature_table(
name='recommender_system.customer_features',
keys='customer_id',
schema=customer_features_df.schema,
description='Customer features'
)
# An alternative is to use `create_feature_table` and specify the `features_df` argument.
# This code automatically saves the features to the underlying Delta table.
# customer_feature_table = fs.create_feature_table(
# ...
# features_df=customer_features_df,
# ...
# )
# To use a composite key, pass all keys in the create_feature_table call
# customer_feature_table = fs.create_feature_table(
# ...
# keys=['customer_id', 'date'],
# ...
# )
# Use write_table to write data to the feature table
# Overwrite mode does a full refresh of the feature table
fs.write_table(
name='recommender_system.customer_features',
df = customer_features_df,
mode = 'overwrite'
)
Meglévő Delta-tábla regisztrálása funkciótáblaként
A 0.3.8-as vagy újabb verzióval egy meglévő Delta-táblát regisztrálhat funkciótáblaként. A Delta-táblának léteznie kell a metaadattárban.
Feljegyzés
Regisztrált szolgáltatástáblák frissítéséhez a Szolgáltatástár Python API-t kell használnia.
fs.register_table(
delta_table='recommender.customer_features',
primary_keys='customer_id',
description='Customer features'
)
Funkciótáblákhoz való hozzáférés szabályozása
Lásd: Funkciótáblákhoz való hozzáférés szabályozása.
Funkciótábla frissítése
A funkciótáblát új funkciók hozzáadásával vagy az elsődleges kulcs alapján meghatározott sorok módosításával frissítheti.
A következő szolgáltatástábla metaadatai nem frissíthetők:
- Elsődleges kulcs
- Partíciókulcs
- Meglévő szolgáltatás neve vagy típusa
Új funkciók hozzáadása meglévő funkciótáblához
Új funkciókat kétféleképpen adhat hozzá egy meglévő funkciótáblához:
- Frissítse a meglévő funkciószámítási függvényt, és futtassa
write_table
a visszaadott DataFrame-et. Ez frissíti a szolgáltatástábla sémáját, és egyesíti az új funkcióértékeket az elsődleges kulcs alapján. - Hozzon létre egy új funkciószámítási függvényt az új funkcióértékek kiszámításához. Az új számítási függvény által visszaadott DataFrame-nek tartalmaznia kell a funkciótáblák elsődleges kulcsait és partíciókulcsait (ha meg van adva). Futtassa
write_table
a DataFrame-et az új funkciók meglévő funkciótáblába való írásához ugyanazzal az elsődleges kulccsal.
Csak bizonyos sorok frissítése egy szolgáltatástáblában
Használat mode = "merge"
a következőben: write_table
. Azok a sorok, amelyek elsődleges kulcsa nem létezik a hívásban küldött DataFrame-ben write_table
, változatlanok maradnak.
fs.write_table(
name='recommender.customer_features',
df = customer_features_df,
mode = 'merge'
)
Feladat ütemezése funkciótáblák frissítéséhez
Annak érdekében, hogy a funkciótáblák funkciói mindig a legújabb értékekkel rendelkezzenek, a Databricks azt javasolja, hogy hozzon létre egy jegyzetfüzetet futtató feladatot , amely rendszeresen, például naponta frissíti a funkciótáblát. Ha már létrehozott egy nem ütemezett feladatot, átkonvertálja ütemezett feladattá, hogy a funkció értékei mindig naprakészek legyenek.
A funkciótáblák frissítéséhez használt mode='merge'
kód az alábbi példában látható.
fs = FeatureStoreClient()
customer_features_df = compute_customer_features(data)
fs.write_table(
df=customer_features_df,
name='recommender_system.customer_features',
mode='merge'
)
A napi funkciók múltbeli értékeinek tárolása
Összetett elsődleges kulccsal rendelkező funkciótábla definiálása. Adja meg a dátumot az elsődleges kulcsban. Egy funkciótáblához store_purchases
például összetett elsődleges kulcsot (date
, user_id
) és partíciókulcsot date
használhat a hatékony olvasáshoz.
fs.create_table(
name='recommender_system.customer_features',
primary_keys=['date', 'customer_id'],
partition_columns=['date'],
schema=customer_features_df.schema,
description='Customer features'
)
Ezután létrehozhat olyan kódot, amely beolvassa a funkciótábla szűréséből date
a kamatidőszakra.
Idősorozat-funkciótáblát úgy is létrehozhat, hogy az date
oszlopot időbélyegkulcsként adja meg az timestamp_keys
argumentum használatával.
fs.create_table(
name='recommender_system.customer_features',
primary_keys=['date', 'customer_id'],
timestamp_keys=['date'],
schema=customer_features_df.schema,
description='Customer timeseries features'
)
Ez lehetővé teszi az időponthoz kötött kereséseket a használat create_training_set
score_batch
vagy a . A rendszer időbélyeg-alapú illesztéseket hajt végre az timestamp_lookup_key
Ön által megadott módon.
A funkciótábla naprakészen tartásához állítson be egy rendszeresen ütemezett feladatot a szolgáltatások írásához, vagy streamelje az új funkcióértékeket a funkciótáblába.
Streamelési szolgáltatás számítási folyamatának létrehozása a funkciók frissítéséhez
Streamelési szolgáltatás számítási folyamatának létrehozásához adjon át egy streamelést DataFrame
argumentumként.write_table
Ez a metódus egy objektumot StreamingQuery
ad vissza.
def compute_additional_customer_features(data):
''' Returns Streaming DataFrame
'''
pass # not shown
customer_transactions = spark.readStream.load("dbfs:/events/customer_transactions")
stream_df = compute_additional_customer_features(customer_transactions)
fs.write_table(
df=stream_df,
name='recommender_system.customer_features',
mode='merge'
)
Olvasás funkciótáblából
Funkcióértékek olvasására használható read_table
.
fs = feature_store.FeatureStoreClient()
customer_features_df = fs.read_table(
name='recommender.customer_features',
)
Funkciótáblák keresése és tallózása
A Szolgáltatástár felhasználói felületén kereshet vagy tallózhat a szolgáltatástáblák között.
Az oldalsávon válassza a Machine Learning > Feature Store lehetőséget a funkciótár felhasználói felületének megjelenítéséhez.
A keresőmezőbe írja be a funkciótáblák, szolgáltatások vagy a funkciószámításhoz használt adatforrás nevének egészét vagy egy részét. A címke kulcsának vagy értékének egészét vagy egy részét is megadhatja. A keresési szöveg nem érzékeny a kis- és nagybetűkre.
Funkciótáblázat metaadatainak lekérése
A funkciótáblázat metaadatait lekérő API a használt Databricks futtatókörnyezet verziójától függ. A 0.3.6-os vagy újabb verzióval használja a következőt get_table
: . A 0.3.5-ös vagy újabb verzióval használja a következőt get_feature_table
: .
# this example works with v0.3.6 and above
# for v0.3.5, use `get_feature_table`
from databricks.feature_store import FeatureStoreClient
fs = FeatureStoreClient()
fs.get_table("feature_store_example.user_feature_table")
Funkciótáblacímkék használata
A címkék kulcs-érték párok, amelyeket szolgáltatástáblák létrehozására és keresésére használhat. Címkéket hozhat létre, szerkeszthet és törölhet a Funkciótár felhasználói felületén vagy a Szolgáltatástár Python API-jában.
Funkciótáblacímkék használata a felhasználói felületen
A Szolgáltatástár felhasználói felületén kereshet vagy tallózhat a szolgáltatástáblák között. A felhasználói felület eléréséhez az oldalsávon válassza a Machine Learning > Feature Store lehetőséget.
Címke hozzáadása a Funkciótár felhasználói felületével
Kattintson
, ha még nincs megnyitva. Megjelenik a címkék táblázata.
Kattintson a Név és érték mezőkre, és adja meg a címke kulcsát és értékét.
Kattintson a Hozzáadás gombra.
Címke szerkesztése vagy törlése a Funkciótár felhasználói felületén
Meglévő címke szerkesztéséhez vagy törléséhez használja a Műveletek oszlop ikonjait.
Funkciótábla-címkék használata a Feature Store Python API használatával
A 0.4.1-es vagy újabb verziót futtató fürtökön címkéket hozhat létre, szerkeszthet és törölhet a Feature Store Python API használatával.
Követelmények
Feature Store-ügyfél v0.4.1 vagy újabb verzió
Szolgáltatástábla létrehozása címkével a Feature Store Python API használatával
from databricks.feature_store import FeatureStoreClient
fs = FeatureStoreClient()
customer_feature_table = fs.create_table(
...
tags={"tag_key_1": "tag_value_1", "tag_key_2": "tag_value_2", ...},
...
)
Címkék hozzáadása, frissítése és törlése a Feature Store Python API használatával
from databricks.feature_store import FeatureStoreClient
fs = FeatureStoreClient()
# Upsert a tag
fs.set_feature_table_tag(table_name="my_table", key="quality", value="gold")
# Delete a tag
fs.delete_feature_table_tag(table_name="my_table", key="quality")
Adatforrások frissítése funkciótáblához
A funkciótároló automatikusan nyomon követi a funkciók kiszámításához használt adatforrásokat. Az adatforrásokat manuálisan is frissítheti a Feature Store Python API-val.
Követelmények
Feature Store-ügyfél 0.5.0-s vagy újabb verziója
Adatforrások hozzáadása a Feature Store Python API használatával
Az alábbiakban néhány példaparancs látható. További részletekért tekintse meg az API dokumentációját.
from databricks.feature_store import FeatureStoreClient
fs = FeatureStoreClient()
# Use `source_type="table"` to add a table in the metastore as data source.
fs.add_data_sources(feature_table_name="clicks", data_sources="user_info.clicks", source_type="table")
# Use `source_type="path"` to add a data source in path format.
fs.add_data_sources(feature_table_name="user_metrics", data_sources="dbfs:/FileStore/user_metrics.json", source_type="path")
# Use `source_type="custom"` if the source is not a table or a path.
fs.add_data_sources(feature_table_name="user_metrics", data_sources="user_metrics.txt", source_type="custom")
Adatforrások törlése a Feature Store Python API használatával
További részletekért tekintse meg az API dokumentációját.
Feljegyzés
A következő parancs törli a forrásneveknek megfelelő összes típusú adatforrást ("tábla", "elérési út" és "egyéni").
from databricks.feature_store import FeatureStoreClient
fs = FeatureStoreClient()
fs.delete_data_sources(feature_table_name="clicks", sources_names="user_info.clicks")
Funkciótábla törlése
A Szolgáltatástár felhasználói felületén vagy a Szolgáltatástár Python API-jával törölheti a szolgáltatástáblát.
Feljegyzés
- A szolgáltatástáblák törlése váratlan hibákat okozhat a felsőbb rétegbeli gyártókban és az alsóbb rétegbeli felhasználókban (modellek, végpontok és ütemezett feladatok). A közzétett online áruházakat törölnie kell a felhőszolgáltatójával.
- Ha az API-val töröl egy funkciótáblát, a mögöttes Delta-tábla is el lesz távolítva. Ha töröl egy szolgáltatástáblát a felhasználói felületről, külön kell elvetnie a mögöttes Delta-táblát.
Funkciótábla törlése a felhasználói felületen
A funkciótábla lapján kattintson
a funkciótábla neve jobb oldalán, és válassza a Törlés lehetőséget. Ha nem rendelkezik a funkciótáblához tartozó MANAGE engedéllyel, akkor ez a beállítás nem jelenik meg.
A Funkciótábla törlése párbeszédpanelen kattintson a Törlés gombra a megerősítéshez.
Ha a mögöttes Delta-táblát is el szeretné dobni, futtassa a következő parancsot egy jegyzetfüzetben.
%sql DROP TABLE IF EXISTS <feature-table-name>;
Szolgáltatástábla törlése a Feature Store Python API használatával
A Feature Store 0.4.1-s és újabb verziójú ügyfélalkalmazásával funkciótáblát törölhet drop_table
. Ha töröl egy táblát, drop_table
a mögöttes Delta-tábla is el lesz távolítva.
fs.drop_table(
name='recommender_system.customer_features'
)
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: