Online tables használata valós idejű szolgáltatás-kiszolgáláshoz
Fontos
Az online tables szolgáltatás a következő régiókban érhető el nyilvános előzetes verzióban: westus
, eastus
, eastus2
, northeurope
, westeurope
. A díjszabással kapcsolatos információkért lásd: Online Tables díjszabás.
Az online table a Delta Table írásvédett másolata, amely sororientált formátumban van tárolva, online hozzáférésre optimalizálva. Az online tables teljes mértékben szerver nélküli tables, amely automatikusan skálázza az átviteli kapacitást a kérelemterheléssel, és alacsony késleltetést, valamint nagy átviteli kapacitást biztosít bármilyen méretű adatokhoz. Az online tables a Mozaik AI-modellkiszolgálás, a funkció-kiszolgálás és a lekéréssel kibővített generációs (RAG) alkalmazások where gyors adatkereséshez használják.
Az Lakehouse Federationhasználatával online lekérdezéseken belül is használhatja a tables-t. A Lakehouse Federation használatakor kiszolgáló nélküli SQL adattárházat kell használni az online tableseléréséhez. Csak olvasási műveletek (SELECT
) támogatottak. Ez a képesség csak interaktív vagy hibakeresési célokra szolgál, és nem használható éles vagy kritikus fontosságú számítási feladatokhoz.
Az online table a Databricks felhasználói felületén történő létrehozása egy lépésből áll. Egyszerűen select a Delta tableCatalog Explorerben, és selectonline tablehozzon létre. A REST API-t vagy a Databricks SDK-t is használhatja az online tableslétrehozásához és kezeléséhez. Lásd: Az online tables használata API-kkal.
Követelmények
- A munkaterületet engedélyezni kell a Unity Catalogszámára. A unity Catalog metaadattár létrehozásához, a munkaterületen való engedélyezéséhez és egy Cataloglétrehozásához kövesse a dokumentációt.
- A modellt regisztrálni kell a Unity Catalog-ban az online tableseléréséhez.
Dolgozzon az online tables-val a felhasználói felületen
Ez a szakasz az online tableslétrehozását és törlését, valamint az online tablesállapotának és frissítéseinek ellenőrzését ismerteti.
Online table létrehozása a felhasználói felületen
Online table hozhat létre Catalog Explorer használatával. A szükséges engedélyekről további információt a Felhasználói engedélyek című témakörben talál.
Online tablelétrehozásához a forrás Delta table elsődleges kulccsal kell rendelkeznie. Ha a használni kívánt Delta table nem rendelkezik elsődleges kulccsal, hozzon létre egyet az alábbi utasításokat követve: Meglévő Delta table használata a Unity Catalog-ban szolgáltatásként table.
Az Catalog Explorerben navigáljon ahhoz a forrás table-hez, amelyet online table-ként szeretne sync. A menüben hozzon létre selectOnline table.
online létrehozása
Az online tablekonfigurálásához használja a párbeszédpanel választóit.
Név: Az online table Unity Catalog-hoz használandó név.
elsődleges kulcs: Column(ok) a forrásban table az online tableelsődleges kulcs(ok)ként való használatához.
Munkaidő-nyilvántartási kulcs: (nem kötelező). Column a forrásban table idősor-kulcsként használni. Ha meg van adva, az online table csak azt a sort tartalmazza, amely az egyes elsődleges kulcsokhoz tartozó legújabb kulcsértéket tartalmazza az idősorok közül.
Sync mód: Meghatározza, hogy a szinkronizálási folyamat hogyan frissíti az online table. Select Pillanatkép, Aktiváltvagy Folyamatosegyikét.
Házirend Leírás Pillanatkép A folyamatcső egyszer fut le, hogy pillanatképet készítsen a forrásról table, és átmásolja az online table-re. A forrás table későbbi módosításai automatikusan tükröződnek az online table-ben, új pillanatkép készítésével a forrásról és egy új másolat létrehozásával. Az online table tartalma atomilag frissül. Triggerrel indított A pipeline egyszer fut le, hogy létrehozza az online table-ben a forrás table kezdő pillanatkép-másolatát. A Pillanatkép sync módtól eltérően az online table frissítésekor csak az utolsó folyamatvégrehajtás óta történt módosítások lesznek lekérve és alkalmazva az online table. Az inkrementális refresh manuálisan aktiválható vagy automatikusan aktiválható egy ütemezés szerint. Folyamatos A folyamat folyamatosan fut. A forrás table későbbi módosításait a rendszer növekményesen alkalmazza az online table valós idejű streamelési módban. Nincs szükség a refresh kézikönyvre.
Feljegyzés
A által aktivált vagy a folyamatossync mód támogatásához a forrásnál table engedélyezve kell legyen a Adatcsatorna-változtatás funkció.
- Ha végzett, kattintson a Megerősítés gombra. Megjelenik a table online oldal.
- Az új online table a létrehozási párbeszédpanelen megadott catalog, schemaés név alatt jön létre. Az Catalog Explorerben az online table-t a
jelzi.
Get állapot- és triggerfrissítések a felhasználói felületen
Az online tableállapotának ellenőrzéséhez kattintson a table nevére a Catalog-ben annak megnyitásához. Megjelenik az online table lap, amelyen megnyílik az Áttekintés lap. Az Data Ingest szakasz a legújabb updateállapotát mutatja. A updateaktiválásához most kattintson a Sync. Az Data Ingest szakasz tartalmaz egy hivatkozást a Delta Live Tables adatcsatornára, amely frissíti a table-at.
Rendszeres frissítések ütemezése
Az online tables, amelynél Pillanatkép vagy Aktiváltsync mód van, automatikus rendszeres frissítéseket ütemezhet. A update ütemezést a Delta Live Tables folyamat kezeli, amely frissíti a table.
- Az Catalog Explorerben navigáljon az online table-re.
- Az Adatbetöltés szakaszban kattintson a folyamatra mutató hivatkozásra.
- A jobb felső sarokban kattintson a Ütemezéselemre, és adjon hozzá egy új ütemezést vagy adja hozzá update meglévő ütemezéseket.
Töröljön online table-t a felhasználói felületen
Az online table lapon a select törlése a kebab menüből.
Online tables használata API-k használatával
A Databricks SDK-t vagy a REST API-t használva online tables-ot is létrehozhat és kezelhet.
A referenciainformációkért tekintse meg a Pythonhoz készült Databricks SDK vagy a REST API referenciadokumentációját.
Követelmények
A Databricks SDK 0.20-es vagy újabb verziója.
Online table létrehozása API-k használatával
Databricks SDK – Python
from pprint import pprint
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import *
w = WorkspaceClient(host='https://xxx.databricks.com', token='xxx')
# Create an online table
spec = OnlineTableSpec(
primary_key_columns=["pk_col"],
source_table_full_name="main.default.source_table",
run_triggered=OnlineTableSpecTriggeredSchedulingPolicy.from_dict({'triggered': 'true'})
)
online_table = OnlineTable(
name="main.default.my_online_table", # Fully qualified table name
spec=spec # Online table specification
)
w.online_tables.create_and_wait(table=online_table)
REST API
curl --request POST "https://xxx.databricks.com/api/2.0/online-tables" \
--header "Authorization: Bearer xxx" \
--data '{
"name": "main.default.my_online_table",
"spec": {
"run_triggered": {},
"source_table_full_name": "main.default.source_table",
"primary_key_columns": ["a"]
}
}'
Az online table automatikusan elkezdi a szinkronizálást a létrehozása után.
Get állapot és refresh aktiválása API-k használatával
Az alábbi példát követve megtekintheti az online table állapotát és specifikációját. Ha az online table nem folyamatos, és szeretne kézi refresh-et kezdeményezni az adataiból, ezt a csővezeték API segítségével teheti meg.
Használja az online table-hoz tartozó folyamatazonosítót az online table specifikációban, és indítson el egy új update-t a folyamathoz, hogy aktiválja a refresh-at. Ez egyenértékű a -ra, majdSync-re történő kattintással most a online felhasználói felületén a table-ban az Catalog Explorerben.
Databricks SDK – Python
pprint(w.online_tables.get('main.default.my_online_table'))
# Sample response
OnlineTable(name='main.default.my_online_table',
spec=OnlineTableSpec(perform_full_copy=None,
pipeline_id='some-pipeline-id',
primary_key_columns=['pk_col'],
run_continuously=None,
run_triggered={},
source_table_full_name='main.default.source_table',
timeseries_key=None),
status=OnlineTableStatus(continuous_update_status=None,
detailed_state=OnlineTableState.PROVISIONING,
failed_status=None,
message='Online Table creation is '
'pending. Check latest status in '
'Delta Live Tables: '
'https://xxx.databricks.com/pipelines/some-pipeline-id',
provisioning_status=None,
triggered_update_status=None))
# Trigger an online table refresh by calling the pipeline API. To discard all existing data
# in the online table before refreshing, set "full_refresh" to "True". This is useful if your
# online table sync is stuck due to, for example, the source table being deleted and recreated
# with the same name while the sync was running.
w.pipelines.start_update(pipeline_id='some-pipeline-id', full_refresh=True)
REST API
curl --request GET \
"https://xxx.databricks.com/api/2.0/online-tables/main.default.my_online_table" \
--header "Authorization: Bearer xxx"
# Sample response
{
"name": "main.default.my_online_table",
"spec": {
"run_triggered": {},
"source_table_full_name": "main.default.source_table",
"primary_key_columns": ["pk_col"],
"pipeline_id": "some-pipeline-id"
},
"status": {
"detailed_state": "PROVISIONING",
"message": "Online Table creation is pending. Check latest status in Delta Live Tables: https://xxx.databricks.com#joblist/pipelines/some-pipeline-id"
}
}
# Trigger an online table refresh by calling the pipeline API. To discard all existing data
# in the online table before refreshing, set "full_refresh" to "True". This is useful if your
# online table sync is stuck due to, for example, the source table being deleted and recreated
# with the same name while the sync was running.
curl --request POST "https://xxx.databricks.com/api/2.0/pipelines/some-pipeline-id/updates" \
--header "Authorization: Bearer xxx" \
--data '{
"full_refresh": true
}'
Online table törlése API-k használatával
Databricks SDK – Python
w.online_tables.delete('main.default.my_online_table')
REST API
curl --request DELETE \
"https://xxx.databricks.com/api/2.0/online-tables/main.default.my_online_table" \
--header "Authorization: Bearer xxx"
Az online table törlése leállítja a folyamatban lévő adatszinkronizálást, és minden erőforrást felszabadít.
Online table adatok kiszolgálása funkciókiszolgáló végpont használatával
A Databricksen kívül üzemeltetett modellekhez és alkalmazásokhoz létrehozhat egy végpontot kiszolgáló funkciót az online tablesszolgáltatásainak kiszolgálásához. A végpont alacsony késéssel teszi elérhetővé a funkciókat REST API használatával.
Hozzon létre egy funkciós specifikációt.
Amikor létrehoz egy funkcióspecifikációt, adja meg a forrás Delta table-t. Ez lehetővé teszi, hogy a funkció specifikációja offline és online forgatókönyvekben is használható legyen. Online keresések esetén a kiszolgáló végpont automatikusan az online table használatával végez alacsony késésű funkciókereséseket.
A forrás delta table és az online table ugyanazt az elsődleges kulcsot kell használnia.
A funkció specifikációja a Catalog Explorer Függvény lapján tekinthető meg.
from databricks.feature_engineering import FeatureEngineeringClient, FeatureLookup fe = FeatureEngineeringClient() fe.create_feature_spec( name="catalog.default.user_preferences_spec", features=[ FeatureLookup( table_name="user_preferences", lookup_key="user_id" ) ] )
Hozzon létre egy szolgáltatáskiszolgáló végpontot.
Ez a lépés feltételezi, hogy létrehozott egy online table
user_preferences_online_table
névvel, amely szinkronizál adatokat auser_preferences
Delta table-ból. A szolgáltatás specifikációjával hozzon létre egy szolgáltatáskiszolgáló végpontot. A végpont egy REST API-n keresztül teszi elérhetővé az adatokat a hozzá társított online tablehasználatával.Feljegyzés
A műveletet végrehajtó felhasználónak az offline table és az online tabletulajdonosának kell lennie.
Databricks SDK – Python
from databricks.sdk import WorkspaceClient from databricks.sdk.service.serving import EndpointCoreConfigInput, ServedEntityInput workspace = WorkspaceClient() # Create endpoint endpoint_name = "fse-location" workspace.serving_endpoints.create_and_wait( name=endpoint_name, config=EndpointCoreConfigInput( served_entities=[ ServedEntityInput( entity_name=feature_spec_name, scale_to_zero_enabled=True, workload_size="Small" ) ] ) )
Python API
from databricks.feature_engineering.entities.feature_serving_endpoint import ( ServedEntity, EndpointCoreConfig, ) fe.create_feature_serving_endpoint( name="user-preferences", config=EndpointCoreConfig( served_entities=ServedEntity( feature_spec_name="catalog.default.user_preferences_spec", workload_size="Small", scale_to_zero_enabled=True ) ) )
Get adatok a funkció kiszolgáló végpontjáról.
Az API-végpont eléréséhez küldjön egy HTTP-GET kérelmet a végpont URL-címére. A példa bemutatja, hogyan teheti ezt meg Python API-k használatával. Más nyelvekről és eszközökről a Szolgáltatás-kiszolgálás című témakörben olvashat.
# Set up credentials export DATABRICKS_TOKEN=...
url = "https://{workspace_url}/serving-endpoints/user-preferences/invocations" headers = {'Authorization': f'Bearer {DATABRICKS_TOKEN}', 'Content-Type': 'application/json'} data = { "dataframe_records": [{"user_id": user_id}] } data_json = json.dumps(data, allow_nan=True) response = requests.request(method='POST', headers=headers, url=url, data=data_json) if response.status_code != 200: raise Exception(f'Request failed with status {response.status_code}, {response.text}') print(response.json()['outputs'][0]['hotel_preference'])
Online tables használata RAG-alkalmazásokkal
A RAG-alkalmazások közös felhasználási esete az online tables. Ön létrehoz egy online table-t a RAG alkalmazáshoz szükséges strukturált adatok számára, és egy szolgáltatásvégpontnál tárolja azokat. A RAG alkalmazás a szolgáltatásvégpont segítségével keres releváns adatokat az online table-ból.
A tipikus lépések a következők:
- Hozzon létre egy szolgáltatáskiszolgáló végpontot.
- Hozzon létre egy eszközt a LangChain vagy bármely hasonló csomag használatával, amely a végpontot használja a releváns adatok kereséséhez.
- Használja az eszközt egy LangChain-ügynökben vagy hasonló ügynökben a releváns adatok lekéréséhez.
- Hozzon létre egy végpontot kiszolgáló modellt az alkalmazás üzemeltetéséhez.
Részletes útmutatásért és egy példajegyzetfüzetért lásd a szolgáltatástervezési példát: strukturált RAG-alkalmazás.
Jegyzetfüzet-példák
Az alábbi jegyzetfüzet bemutatja, hogyan tehet közzé funkciókat az online tables a valós idejű kiszolgálás és az automatikus funkciókeresés érdekében.
Online tables bemutató jegyzetfüzet
Online tables használata a Mozaik AI-modell kiszolgálásával
Az online tables segítségével megkeresheti a Mozaik AI-modell szolgáltatás funkcióit. Amikor sync egy jellemzőt table egy online table-hez, a jellemzőkből betanított modellek table automatikusan megkeresik a values online table-ből az inferencia során. További konfiguráció nem szükséges.
A modell betanítása egy használatával
FeatureLookup
.Modellbetanításhoz használja az offline jellemzők table funkcióit a modell betanításhoz set, ahogyan az a következő példában látható.
training_set = fe.create_training_set( df=id_rt_feature_labels, label='quality', feature_lookups=[ FeatureLookup( table_name="user_preferences", lookup_key="user_id" ) ], exclude_columns=['user_id'], )
A modell kiszolgálása Mozaik AI-modell szolgáltatással. A modell automatikusan megkeresi a funkciókat az online table. Részletekért tekintse meg az Automatikus funkciókeresés a Databricks-modellkiszolgálóval című témakört.
Felhasználói engedélyek
Online tablelétrehozásához a következő engedélyekkel kell rendelkeznie:
- A(z)
SELECT
jogosultság a(z) forrás table. -
USE_CATALOG
jogosultság a célhelyen catalog. - A
USE_SCHEMA
és aCREATE_TABLE
jogosultság a célállomáson schema.
Egy online tableadatszinkronizálási folyamatának kezeléséhez vagy az online table tulajdonosának kell lennie, vagy rendelkeznie kell az online table-on a REFRESH jogosultsággal. Azok a felhasználók, akik nem rendelkeznek USE_CATALOG és USE_SCHEMA jogosultságokkal a catalog, nem fogják látni a Catalog Explorerben az online table.
A Unity Catalog metaadattára Privilege Model 1.0-s verziójávalkell rendelkeznie.
Végpontengedély-modell
A rendszer automatikusan létrehoz egy egyedi szolgáltatás főfüggvényt egy funkciót kiszolgáló vagy egy modellt kiszolgáló végponthoz, amely korlátozott engedélyekkel rendelkezik az online tablesadatainak lekérdezéséhez. Ez a szolgáltatásnév lehetővé teszi, hogy a végpontok az erőforrást létrehozó felhasználótól függetlenül férjenek hozzá az adatokhoz, és biztosítják, hogy a végpont továbbra is működjön, ha a létrehozó elhagyja a munkaterületet.
A szolgáltatásnév élettartama a végpont élettartama. A naplók jelezhetik, hogy a rendszer által létrehozott rekordok a Unity Catalogcatalog tulajdonosa számára a szükséges jogosultságokat biztosítják ennek a szolgáltatási főtárgynak.
Korlátozások
- Csak egy online table támogatott forrásonként table.
- Egy online table és a forrás table esetén legfeljebb 1000 columnslehet.
- Az online tablerendszerben az Columns adattípusai, mint például az ARRAY, MAP vagy STRUCT, nem használhatók elsődleges kulcsként.
- Ha az online tableelsődleges kulcsként egy column használ, a rendszer figyelmen kívül hagyja a forrás tablewhere a column null values tartalmazó sorait.
- Külső, rendszer és belső tables nem támogatottak forrásként tables.
- A Forrás tables, a változásadatcsatorna engedélyezése nélkül, csak a Pillanatképsync módot támogatja.
- A Delta Sharing tables csak a pillanatképsync módban támogatott.
-
Catalog, schemaés table online table neve csak alfanumerikus karaktereket és aláhúzásjeleket tartalmazhat, és nem kezdődhet számokkal. A kötőjelek (
-
) nem engedélyezettek. - Columns String típus legfeljebb 64 KB hosszúságú lehet.
- Column nevek legfeljebb 64 karakter hosszúságúak.
- A sor maximális mérete 2 MB.
- A Unity Catalog metaadattárban lévő összes online tables együttes mérete a nyilvános előzetes verzióban 2 TB tömörítetlen felhasználói adat.
- A másodpercenkénti lekérdezések maximális száma (QPS) 12 000. Vegye fel a kapcsolatot a Databricks-fiókcsapattal a limitnövelése érdekében.
Hibaelhárítás
Nem látom az Online table létrehozása lehetőséget
Ennek oka általában az, hogy a table, amelyből sync (a forrás table) egy nem támogatott típus. Győződjön meg arról, hogy a forrás tablebiztonságos típusa (az Catalog Explorer Részletek lapon) az alábbi támogatott lehetőségek egyike:
TABLE_EXTERNAL
TABLE_DELTA
TABLE_DELTA_EXTERNAL
TABLE_DELTASHARING
TABLE_DELTASHARING_MUTABLE
TABLE_STREAMING_LIVE_TABLE
TABLE_STANDARD
TABLE_FEATURE_STORE
TABLE_FEATURE_STORE_EXTERNAL
TABLE_VIEW
TABLE_VIEW_DELTASHARING
TABLE_MATERIALIZED_VIEW
Online table létrehozásakor nem selectaktivált vagy folyamatossync mód
Ez akkor fordul elő, ha a forrás table nem engedélyezi a Delta-változási adatcsatornát, vagy ha nézet vagy materializált nézet. A Növekményessync mód használatához engedélyezze az adatcsatorna módosítását a forrás table, vagy használjon nem nézetalapú table.
Online tableupdate hibás vagy a státusz offline-t mutat
A hiba elhárításához kattintson a Catalog Explorerben az online tableÁttekintés lapján megjelenő folyamatazonosítóra.
A megjelenő folyamat felhasználói felületén kattintson a következő bejegyzésre: "Nem sikerült feloldani a folyamat __online_table" szöveget.
Megjelenik egy előugró ablak a Hiba részletei szakaszban található részletekkel .
A hibák gyakori okai a következők:
A table forrást törölték, vagy ugyanazzal a névvel újra létrehozták, miközben az online table szinkronizált. Ez különösen gyakori az online tablesesetében, mert folyamatosan szinkronizálódik.
A forrás table tűzfalbeállítások miatt nem érhető el kiszolgáló nélküli számítással. Ebben az esetben a Hiba részletei szakaszban a következő hibaüzenet jelenhet meg: "Nem sikerült elindítani a DLT szolgáltatást a xxx fürtben...".
Az online tables összesített mérete meghaladja a 2 TB (tömörítetlen méret) metaadattár-szintű limit. A 2 TB-os limit a Delta table sororientált formátumban való kibontása után az eredeti, tömörítetlen méretre utal. A table mérete sorformátumban jelentősen nagyobb lehet, mint a Catalog Explorerben látható Delta table mérete, amely a table tömörített méretére utal egy column-orientált formátumban. A különbség a tabletartalmától függően akár 100x is lehet.
A Delta tabletömörítetlen, sorra bontott méretének becsléséhez használja a következő lekérdezést egy kiszolgáló nélküli SQL Warehouse-ból. A lekérdezés a becsült kibontott table méretet adja vissza bájtban. A lekérdezés sikeres végrehajtása azt is megerősíti, hogy a Serverless Compute hozzáfér a forrás table-hoz.
SELECT sum(length(to_csv(struct(*)))) FROM `source_table`;