Online táblák használata valós idejű szolgáltatás-kiszolgáláshoz
Fontos
Az online táblák nyilvános előzetes verzióban érhetők el a következő régiókban: , , , , westeurope
northeurope
. eastus2
eastus
westus
A díjszabással kapcsolatos információkért tekintse meg az Online táblák díjszabását.
Az online tábla egy olyan Delta-tábla írásvédett másolata, amely sororientált formátumban, online hozzáférésre optimalizálva van tárolva. Az online táblák teljes mértékben kiszolgáló nélküli táblák, amelyek automatikusan skálázják az átviteli kapacitást a kérelembetöltéssel, és alacsony késést és nagy átviteli sebességet biztosítanak bármilyen méretű adatokhoz. Az online táblák úgy lettek kialakítva, hogy a Mozaik AI-modell kiszolgálásával, a szolgáltatás-kiszolgálással és a lekéréssel bővített generációs (RAG) alkalmazásokkal működjenek, ahol gyors adatkereséshez használják őket.
A Lakehouse Federation használatával online táblákat is használhat lekérdezésekben. A Lakehouse Federation használatakor kiszolgáló nélküli SQL-raktárral kell hozzáférnie az online táblákhoz. 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.
Egy egylépéses folyamat egy online tábla létrehozása a Databricks felhasználói felületén. Egyszerűen válassza ki a Delta táblát a Katalóguskezelőben, és válassza az Online tábla létrehozása lehetőséget. A REST API-val vagy a Databricks SDK-val online táblákat is létrehozhat és kezelhet. Lásd: Online táblák használata API-kkal.
Követelmények
- A munkaterületet engedélyezni kell a Unity Cataloghoz. A dokumentációt követve hozzon létre egy Unity Catalog metaadattárat, engedélyezze azt egy munkaterületen, és hozzon létre egy katalógust.
- Egy modellt regisztrálni kell a Unity Katalógusban az online táblák eléréséhez.
Online táblák használata a felhasználói felületen
Ez a szakasz bemutatja, hogyan hozhat létre és törölhet online táblákat, és hogyan ellenőrizheti az online táblák állapotát és aktiválhatja a frissítéseket.
Online tábla létrehozása a felhasználói felületen
Online táblázatot a Catalog Explorerrel hozhat létre. 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 tábla létrehozásához a forrás Delta táblának elsődleges kulccsal kell rendelkeznie. Ha a használni kívánt Delta-tábla nem rendelkezik elsődleges kulccsal, az alábbi utasításokat követve hozzon létre egyet: Meglévő Delta-tábla használata funkciótábláként a Unity Katalógusban.
A Katalóguskezelőben keresse meg azt a forrástáblát, amelyet online táblával szeretne szinkronizálni. A Létrehozás menüben válassza az Online tábla lehetőséget.
Az online tábla konfigurálásához használja a párbeszédpanel választóit.
Név: A Unity Catalog online táblázatához használandó név.
Elsődleges kulcs: A forrástáblában lévő oszlop(ok) az online táblában elsődleges kulcs(ok)ként használandók.
Munkaidő-nyilvántartási kulcs: (nem kötelező). A forrástáblában lévő oszlop időbélyeg-kulcsként használható. Ha meg van adva, az online tábla csak azokat a sorokat tartalmazza, ahol az egyes elsődleges kulcsokhoz a legújabb időerek kulcsérték tartozik.
Szinkronizálási mód: Meghatározza, hogy a szinkronizálási folyamat hogyan frissíti az online táblát. Válasszon egyet a Pillanatkép, az Aktivált vagy a Folyamatos lehetőség közül.
Házirend Leírás Pillanatkép A folyamat egyszer fut, hogy pillanatképet készítsen a forrástábláról, és másolja az online táblába. A forrástábla későbbi módosításai automatikusan megjelennek az online táblában azáltal, hogy új pillanatképet készít a forrásról, és létrehoz egy új másolatot. Az online táblázat tartalma atomi módon frissül. Triggerrel indított A folyamat egyszer fut a forrástábla kezdeti pillanatkép-másolatának létrehozásához az online táblában. A Pillanatkép szinkronizálási módtól eltérően az online tábla frissítésekor csak a legutóbbi folyamatvégrehajtás óta történt változások lesznek lekérve és alkalmazva az online táblára. A növekményes frissítés manuálisan aktiválható vagy automatikusan aktiválható ütemezés szerint. Folyamatos A folyamat folyamatosan fut. A forrástábla későbbi módosításait a rendszer növekményesen alkalmazza az online táblára valós idejű streamelési módban. Nincs szükség manuális frissítésre.
Feljegyzés
Az aktivált vagy a folyamatos szinkronizálási mód támogatásához a forrástáblának engedélyeznie kell a Változás adatcsatorna használatát.
- Ha végzett, kattintson a Megerősítés gombra. Megjelenik az online táblázatlap.
- Az új online tábla a létrehozási párbeszédpanelen megadott katalógus, séma és név alatt jön létre. A Catalog Explorerben az online táblázatot a rendszer jelöli .
Állapot- és triggerfrissítések lekérése a felhasználói felületen
Az online tábla állapotának ellenőrzéséhez kattintson a katalógusban lévő tábla nevére a megnyitásához. Ekkor megjelenik az online táblázat lap, amelyen megnyílik az Áttekintés lap. Az Adatbetöltés szakasz a legújabb frissítés állapotát mutatja. Frissítés indításához kattintson a Szinkronizálás gombra. Az Adatbetöltés szakasz tartalmaz egy hivatkozást is a táblát frissíteni kívánó Delta Live Tables-folyamatra.
Rendszeres frissítések ütemezése
Pillanatképet vagy aktivált szinkronizálási módot tartalmazó online táblák esetében ütemezheti az automatikus rendszeres frissítéseket. A frissítés ütemezését a táblázatot frissítő Delta Live Tables-folyamat kezeli.
- A Katalóguskezelőben lépjen az online táblára.
- Az Adatbetöltés szakaszban kattintson a folyamatra mutató hivatkozásra.
- A jobb felső sarokban kattintson az Ütemezés gombra, és adjon hozzá egy új ütemezést, vagy frissítse a meglévő ütemezéseket.
Online tábla törlése a felhasználói felületen
Az online táblázatlapon válassza a Törlés lehetőséget a kebab menüből.
Online táblák használata API-k használatával
A Databricks SDK-val vagy a REST API-val online táblákat 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 tábla 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'})
)
w.online_tables.create(name='main.default.my_online_table', spec=spec)
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 tábla létrehozása után az online tábla automatikusan megkezdi a szinkronizálást.
Állapot és eseményindító frissítésének lekérése API-k használatával
Az alábbi példát követve megtekintheti az online tábla állapotát és specifikációját. Ha az online tábla nem folyamatos, és manuálisan szeretné frissíteni az adatait, a folyamat API-val megteheti ezt.
Használja az online tábla specifikációjában az online táblához társított folyamatazonosítót, és indítsa el a folyamat új frissítését a frissítés elindításához. Ez egyenértékű a Catalog Explorer online tábla felhasználói felületén a Szinkronizálás gombra kattintással.
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 tábla 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 tábla törlése leállítja a folyamatban lévő adatszinkronizálást, és minden erőforrást felszabadít.
Online táblaadatok kiszolgálása végpontot kiszolgáló szolgáltatás használatával
A Databricksen kívül üzemeltetett modellekhez és alkalmazásokhoz létrehozhat egy végpontot kiszolgáló funkciót az online táblák funkcióinak 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.
Funkcióspecifikáció létrehozásakor meg kell adnia a forrás Delta-táblá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 táblát használja a kis késésű funkciók kereséséhez.
A forrás Delta táblának és az online táblának ugyanazt az elsődleges kulcsot kell használnia.
A szolgáltatás specifikációja a Katalóguskezelő 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 táblát, amely
user_preferences_online_table
szinkronizálja az adatokat a Delta táblábóluser_preferences
. A szolgáltatás specifikációjával hozzon létre egy szolgáltatáskiszolgáló végpontot. A végpont egy REST API-val teszi elérhetővé az adatokat a társított online tábla használatával.Feljegyzés
A műveletet végrehajtó felhasználónak az offline és az online tábla tulajdonosá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 ) ) )
Adatok lekérése a végpontot kiszolgáló szolgáltatásból.
Az API-végpont eléréséhez küldjön egy HTTP GET kérést 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 táblák használata RAG-alkalmazásokkal
A RAG-alkalmazások gyakran használják az online táblákat. Létrehoz egy online táblát a RAG-alkalmazás által igényelt strukturált adatokhoz, és egy szolgáltatáskiszolgáló végponton tárolja azokat. A RAG alkalmazás a végpontot kiszolgáló funkcióval keres releváns adatokat az online táblá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 online táblákban valós idejű szolgáltatás- és automatikus funkciókeresés céljából.
Online táblák bemutató jegyzetfüzete
Online táblák használata a Mozaik AI-modell kiszolgálásával
Online táblákkal megkeresheti a Mozaik AI-modell-szolgáltatás funkcióit. Amikor egy funkciótáblát online táblával szinkronizál, a funkciótáblából származó funkciókkal betanított modellek automatikusan megkeresik az online tábla funkcióértékeit a következtetés 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 a modell betanítási csoportjának offline funkciótáblájának funkcióit, ahogyan az a következő példában is 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 az online táblázat funkcióit. 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 tábla létrehozásához a következő engedélyekkel kell rendelkeznie:
SELECT
jogosultságot a forrástáblában.USE_CATALOG
jogosultságot a célkatalógusban.USE_SCHEMA
ésCREATE_TABLE
jogosultságot a célséma számára.
Egy online tábla adatszinkronizálási folyamatának kezeléséhez vagy az online tábla tulajdonosának kell lennie, vagy meg kell adni a FRISSÍTÉS jogosultságot az online táblában. Azok a felhasználók, akik nem rendelkeznek USE_CATALOG és USE_SCHEMA jogosultságokkal a katalógusban, nem fogják látni az online táblát a Katalóguskezelőben.
A Unity-katalógus metaadattárának 1.0-s jogosultságmodell-verzióval kell rendelkeznie.
Végpontengedély-modell
A rendszer automatikusan létrehoz egy egyedi szolgáltatásnevet egy szolgáltatáskiszolgáló vagy modellszolgáltatás végpontja számára, amely korlátozott engedélyekkel rendelkezik az online táblák adatainak 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. Az auditnaplók jelezhetik, hogy a unitykatalógus-katalógus tulajdonosa rendszer által létrehozott rekordokat hozott létre, és a szolgáltatásnévnek megfelelő jogosultságokat biztosít.
Korlátozások
- Forrástáblánként csak egy online tábla támogatott.
- Egy online tábla és a forrástáblája legfeljebb 1000 oszlopból áll.
- A ARRAY, MAP vagy STRUCT adattípusú oszlopok nem használhatók elsődleges kulcsként az online táblában.
- Ha egy oszlop elsődleges kulcsként van használva az online táblában, a rendszer figyelmen kívül hagyja annak a forrástáblának az összes sorát, amelyben az oszlop null értékeket tartalmaz.
- A külső, a rendszer- és a belső táblák nem támogatottak forrástáblákként.
- A Delta-változási adatcsatorna nélküli forrástáblák csak a Pillanatkép szinkronizálási módot támogatják.
- A deltamegosztási táblák csak pillanatkép-szinkronizálási módban támogatottak.
- Az online tábla katalógus-, séma- és táblázatnevei csak alfanumerikus karaktereket és aláhúzásjeleket tartalmazhatnak, és nem kezdődhetnek számokkal. A kötőjelek (
-
) nem engedélyezettek. - A sztring típusú oszlopok legfeljebb 64 KB hosszúságúak.
- Az oszlopnevek legfeljebb 64 karakter hosszúságúak.
- A sor maximális mérete 2 MB.
- A Unity Catalog metaadattárában lévő összes online tábla összesített mérete 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. A korlát növeléséhez forduljon a Databricks-fiók csapatához.
Hibaelhárítás
Nem jelenik meg az Online tábla létrehozása lehetőség
Ennek oka általában az, hogy a szinkronizálni kívánt tábla (a forrástábla) nem támogatott típus. Győződjön meg arról, hogy a forrástábla Biztonságos típusa (a Katalóguskezelő Részletei lapján látható) 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
Nem tudok aktivált vagy folyamatos szinkronizálási módot választani online tábla létrehozásakor
Ez akkor fordul elő, ha a forrástábla nem engedélyezi a Delta-változási adatcsatornát, vagy ha nézet vagy materializált nézet. A Növekményes szinkronizálási mód használatához engedélyezze az adatcsatorna módosítását a forrástáblán, vagy használjon nem megtekintési táblát.
Az online tábla frissítése sikertelen, vagy offline állapot jelenik meg
A hiba elhárításához kattintson az online tábla Áttekintés lapján megjelenő folyamatazonosítóra a Catalog Explorerben.
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 forrástáblát törölték, vagy törölték és újra létrehozták ugyanazzal a névvel, miközben az online tábla szinkronizálása megtörtént. Ez különösen gyakori a folyamatos online tábláknál, mert folyamatosan szinkronizálódnak.
A forrástábla 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 táblák összesített mérete meghaladja a 2 TB-os (tömörítetlen méretű) metaadattár-szintű korlátot. A 2 TB-os korlát a deltatábla sororientált formátumban történő kibontása után a tömörítetlen méretre vonatkozik. A táblázat mérete sorformátumban jelentősen nagyobb lehet, mint a Katalóguskezelőben látható Delta-tábla mérete, amely a táblázat tömörített méretére hivatkozik oszlop-orientált formátumban. A különbség a táblázat tartalmától függően akár 100x is lehet.
Egy Delta-tábla tö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 bájtban adja vissza a becsült kibontott táblaméretet. A lekérdezés sikeres végrehajtása azt is megerősíti, hogy a kiszolgáló nélküli számítás hozzáfér a forrástáblához.
SELECT sum(length(to_csv(struct(*)))) FROM `source_table`;