Megosztás a következőn keresztül:


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: , , , , westeuropenortheurope. eastus2eastuswestus 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.

  1. 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.

  2. 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.

    válassza az online tábla létrehozása lehetőséget

  3. Az online tábla konfigurálásához használja a párbeszédpanel választóit.

    online tábla konfigurálása párbeszédpanel

    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.

  1. Ha végzett, kattintson a Megerősítés gombra. Megjelenik az online táblázatlap.
  2. 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 online táblázat ikon.

Á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.

online táblázatlap nézete a katalógusban

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.

  1. A Katalóguskezelőben lépjen az online táblára.
  2. Az Adatbetöltés szakaszban kattintson a folyamatra mutató hivatkozásra.
  3. 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ü 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.

  1. 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"
        )
      ]
    )
    
  2. 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ól user_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
        )
      )
    )
    
  3. 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:

  1. Hozzon létre egy szolgáltatáskiszolgáló végpontot.
  2. 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.
  3. Használja az eszközt egy LangChain-ügynökben vagy hasonló ügynökben a releváns adatok lekéréséhez.
  4. 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

Jegyzetfüzet beszerzése

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.

  1. 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'],
    )
    
  2. 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 és CREATE_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.

online táblák folyamathibája

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.

online táblák folyamatának hibaüzenete

Megjelenik egy előugró ablak a Hiba részletei szakaszban található részletekkel .

online táblák a hiba részletei

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`;