Události
Staňte se certifikovaným Datoví technici fabric
14. 1. 23 - 31. 3. 23
Zkontrolujte, jestli máte nárok na nabídku slev na zkoušku, a zaregistrujte se na bezplatné živé relace a připravte se na zkoušku DP-700.
Další informaceTento prohlížeč se už nepodporuje.
Upgradujte na Microsoft Edge, abyste mohli využívat nejnovější funkce, aktualizace zabezpečení a technickou podporu.
Důležité
Online tabulky jsou ve verzi Public Preview v následujících oblastech: westus
, eastus
, eastus2
, northeurope
, . westeurope
Informace o cenách najdete v tématu Ceny online tabulek.
Online tabulka je kopie tabulky Delta, která je uložená ve formátu orientovaném na řádky optimalizovaném pro online přístup. Online tabulky jsou plně bezserverové tabulky, které automaticky škálují kapacitu propustnosti s zatížením požadavku a poskytují nízkou latenci a vysokou propustnost přístupu k datům libovolného škálování. Online tabulky jsou navržené tak, aby fungovaly s aplikacemi RAG (Mosaic AI Model Serving, Feature Serving) a načítáním aplikací rozšířené generace (RAG), ve kterých se používají pro rychlé vyhledávání dat.
Online tabulky můžete použít také v dotazech pomocí Lakehouse Federation. Pokud používáte Federaci Lakehouse, musíte pro přístup k online tabulkám použít bezserverový SQL Warehouse. Podporují se jenom operace čtení (SELECT
). Tato funkce je určená pouze pro účely interaktivního nebo ladění a neměla by se používat pro produkční nebo klíčové úlohy.
Vytvoření online tabulky pomocí uživatelského rozhraní Databricks je proces o jednom kroku. Stačí vybrat tabulku Delta v Průzkumníku katalogu a vybrat Vytvořit online tabulku. K vytváření a správě online tabulek můžete použít také rozhraní REST API nebo sadu Databricks SDK. Viz Práce s online tabulkami pomocí rozhraní API.
Tato část popisuje, jak vytvářet a odstraňovat online tabulky a jak kontrolovat stav a aktivovat aktualizace online tabulek.
Pomocí Průzkumníka katalogu vytvoříte online tabulku. Informace o požadovaných oprávněních najdete v tématu Uživatelská oprávnění.
Pokud chcete vytvořit online tabulku, musí mít zdrojová tabulka Delta primární klíč. Pokud tabulka Delta, kterou chcete použít, nemá primární klíč, vytvořte ji podle těchto pokynů: Použijte existující tabulku Delta v katalogu Unity jako tabulku funkcí.
V Průzkumníku katalogu přejděte do zdrojové tabulky, kterou chcete synchronizovat s online tabulkou. V nabídce Vytvořit vyberte Online tabulku.
Ke konfiguraci online tabulky použijte selektory v dialogovém okně.
Název: Název, který se má použít pro online tabulku v katalogu Unity.
Primární klíč: Sloupce ve zdrojové tabulce, které se mají použít jako primární klíče v online tabulce.
Klávesa Timeseries: (volitelné). Sloupec ve zdrojové tabulce, který se použije jako klíč timeseries. Při zadání obsahuje online tabulka pouze řádek s hodnotou klíče timeseries pro každý primární klíč.
Režim synchronizace: Určuje, jak kanál synchronizace aktualizuje online tabulku. Vyberte jeden ze snímků, aktivovaných nebo průběžných.
Zásady | Popis |
---|---|
Snapshot | Kanál se spustí jednou, aby pořídil snímek zdrojové tabulky a zkopíroval ho do online tabulky. Následné změny zdrojové tabulky se automaticky projeví v online tabulce pořízením nového snímku zdroje a vytvořením nové kopie. Obsah online tabulky se aktualizuje atomicky. |
Aktivované | Kanál se spustí jednou a vytvoří počáteční kopii snímku zdrojové tabulky v online tabulce. Na rozdíl od režimu synchronizace snímků se při aktualizaci online tabulky načtou a použijí u online tabulky pouze změny od posledního spuštění kanálu. Přírůstkovou aktualizaci je možné aktivovat ručně nebo automaticky aktivovat podle plánu. |
Průběžné | Kanál běží nepřetržitě. Následné změny zdrojové tabulky se postupně použijí na online tabulku v režimu streamování v reálném čase. Není nutná žádná ruční aktualizace. |
Poznámka
Aby bylo možné podporovat režim aktivované nebo průběžné synchronizace, musí mít zdrojová tabulka povolený datový kanál Změn.
Pokud chcete zkontrolovat stav online tabulky, otevřete ji kliknutím na název tabulky v katalogu. Otevře se stránka online tabulky s otevřenou kartou Přehled . V části Ingestování dat se zobrazuje stav nejnovější aktualizace. Pokud chcete aktivovat aktualizaci, klikněte teď na Synchronizovat. Oddíl Ingestování dat obsahuje také odkaz na kanál Delta Live Tables, který aktualizuje tabulku.
U online tabulek s režimem synchronizace snímků nebo aktivovaných aktivací můžete naplánovat automatické pravidelné aktualizace. Plán aktualizací spravuje kanál Delta Live Tables, který tabulku aktualizuje.
Na stránce online tabulky vyberte Kebab menuv nabídce kebab odstranit.
K vytváření a správě online tabulek můžete použít také sadu Databricks SDK nebo rozhraní REST API.
Referenční informace najdete v referenční dokumentaci k sadě Databricks SDK pro Python nebo rozhraní REST API.
Databricks SDK verze 0.20 nebo novější
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)
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"]
}
}'
Online tabulka se po vytvoření automaticky spustí se synchronizací.
Stav a specifikaci online tabulky si můžete prohlédnout v následujícím příkladu. Pokud vaše online tabulka není průběžná a chcete aktivovat ruční aktualizaci dat, můžete k tomu použít rozhraní API kanálu.
Použijte ID kanálu přidružené k online tabulce ve specifikaci online tabulky a spusťte novou aktualizaci kanálu, aby se aktualizace aktivovala. To odpovídá kliknutí na Synchronizovat nyní v uživatelském rozhraní online tabulky v Průzkumníku katalogu.
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)
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
}'
w.online_tables.delete('main.default.my_online_table')
curl --request DELETE \
"https://xxx.databricks.com/api/2.0/online-tables/main.default.my_online_table" \
--header "Authorization: Bearer xxx"
Odstraněním online tabulky zastavíte probíhající synchronizaci dat a uvolníte všechny její prostředky.
U modelů a aplikací hostovaných mimo Databricks můžete vytvořit funkci obsluhující koncový bod, který bude obsluhovat funkce z online tabulek. Koncový bod zpřístupní funkce s nízkou latencí pomocí rozhraní REST API.
Vytvořte specifikaci funkce.
Při vytváření specifikace funkce zadáte zdrojovou tabulku Delta. To umožňuje použití specifikace funkce v offline i online scénářích. U online vyhledávání koncový bod obsluhy automaticky používá online tabulku k vyhledávání funkcí s nízkou latencí.
Zdrojová tabulka Delta a online tabulka musí používat stejný primární klíč.
Specifikace funkce se dá zobrazit na kartě Funkce v Průzkumníku katalogu.
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"
)
]
)
Vytvoření koncového bodu obsluhy funkcí
Tento krok předpokládá, že jste vytvořili online tabulku s názvem user_preferences_online_table
, která synchronizuje data z tabulky user_preferences
Delta . Pomocí specifikace funkce vytvořte koncový bod obsluhující funkci. Koncový bod zpřístupňuje data prostřednictvím rozhraní REST API pomocí přidružené online tabulky.
Poznámka
Uživatel, který tuto operaci provádí, musí být vlastníkem offline i online tabulky.
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"
)
]
)
)
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
)
)
)
Získejte data z koncového bodu obsluhující funkce.
Pokud chcete získat přístup ke koncovému bodu rozhraní API, odešlete požadavek HTTP GET na adresu URL koncového bodu. Příklad ukazuje, jak to provést pomocí rozhraní PYTHON API. Další jazyky a nástroje najdete v tématu Obsluha funkcí.
# 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'])
Aplikace RAG jsou běžným případem použití pro online tabulky. Vytvoříte online tabulku pro strukturovaná data, která aplikace RAG potřebuje, a hostujete ji na koncovém bodu obsluhující funkci. Aplikace RAG používá funkci obsluhující koncový bod k vyhledání relevantních dat z online tabulky.
Typické kroky jsou následující:
Podrobné pokyny a ukázkový poznámkový blok najdete v příkladu přípravy funkcí: strukturovaná aplikace RAG.
Následující poznámkový blok ukazuje, jak publikovat funkce do online tabulek pro obsluhu a automatizované vyhledávání funkcí v reálném čase.
Pomocí online tabulek můžete vyhledat funkce pro obsluhu modelu Mosaic AI. Když synchronizujete tabulku funkcí s online tabulkou, modely vytrénované pomocí funkcí z této tabulky automaticky vyhledávají hodnoty funkcí z online tabulky během odvozování. Nevyžaduje se žádná další konfigurace.
Použijte k FeatureLookup
trénování modelu.
Pro trénování modelu použijte funkce z tabulky offline funkcí v trénovací sadě modelů, jak je znázorněno v následujícím příkladu:
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'],
)
Obsluha modelu s rozhraním Mosaic AI Model Obsluha. Model automaticky vyhledá funkce z online tabulky. Podrobnosti najdete v tématu Automatické vyhledávání funkcí pomocí služby Model Databricks.
K vytvoření online tabulky musíte mít následující oprávnění:
SELECT
oprávnění ke zdrojové tabulce.USE_CATALOG
oprávnění k cílovému katalogu.USE_SCHEMA
a CREATE_TABLE
oprávnění k cílovému schématu.Pokud chcete spravovat kanál synchronizace dat online tabulky, musíte být buď vlastníkem online tabulky, nebo musíte mít udělené oprávnění REFRESH pro online tabulku. Uživatelé, kteří nemají oprávnění USE_CATALOG a USE_SCHEMA v katalogu, neuvidí online tabulku v Průzkumníku katalogu.
Metastore katalogu Unity musí mít model oprávnění verze 1.0.
Jedinečný instanční objekt se automaticky vytvoří pro funkci obsluhující koncový bod nebo model obsluhující koncový bod s omezenými oprávněními potřebnými k dotazování dat z online tabulek. Tento instanční objekt umožňuje koncovým bodům přistupovat k datům nezávisle na uživateli, který prostředek vytvořil, a zajišťuje, aby koncový bod mohl dál fungovat, pokud autor opustí pracovní prostor.
Životnost tohoto instančního objektu je životnost koncového bodu. Protokoly auditu mohou znamenat systémem generované záznamy pro vlastníka katalogu Unity, který uděluje potřebná oprávnění k tomuto instančnímu objektu.
-
) nejsou povoleny.Příčinou je obvykle to, že tabulka, ze které se pokoušíte synchronizovat (zdrojová tabulka), není podporovaný typ. Ujistěte se, že zdrojová tabulka Je zabezpečitelný druh (zobrazený na kartě Podrobnosti Průzkumníka katalogu) je jednou z podporovaných možností níže:
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
K tomu dochází v případě, že zdrojová tabulka nemá povolený datový kanál delta změn nebo pokud se jedná o zobrazení nebo materializované zobrazení. Pokud chcete použít režim přírůstkové synchronizace, povolte kanál změn dat ve zdrojové tabulce nebo použijte tabulku bez zobrazení.
Pokud chcete začít řešit tuto chybu, klikněte na ID kanálu, které se zobrazí na kartě Přehled online tabulky v Průzkumníku katalogu.
Na stránce uživatelského rozhraní kanálu, která se zobrazí, klikněte na položku "Nepodařilo se přeložit tok "__online_table".
Zobrazí se automaticky otevírané okno s podrobnostmi v části Podrobnosti o chybě.
Mezi běžné příčiny chyb patří:
Zdrojová tabulka byla odstraněna nebo odstraněna a znovu vytvořena se stejným názvem, zatímco se online tabulka synchronizovala. To je zvlášť běžné u průběžných online tabulek, protože se neustále synchronizují.
Zdrojovou tabulku nelze získat přístup prostřednictvím bezserverového výpočetního prostředí z důvodu nastavení brány firewall. V této situaci se v části Podrobnosti o chybě může zobrazit chybová zpráva "Nepodařilo se spustit službu DLT v clusteru xxx...".
Agregovaná velikost online tabulek překračuje limit 2 TB (nekomprimovaná velikost) metastoru. Limit 2 TB odkazuje na nekomprimovanou velikost po rozbalení tabulky Delta ve formátu orientovaném na řádky. Velikost tabulky ve formátu řádku může být výrazně větší než velikost tabulky Delta zobrazená v Průzkumníku katalogu, která odkazuje na komprimovanou velikost tabulky ve sloupcovém formátu. Rozdíl může být tak velký jako 100x v závislosti na obsahu tabulky.
Pokud chcete odhadnout nekomprimovanou, rozbalenou velikost řádku tabulky Delta, použijte následující dotaz z bezserverového SQL Warehouse. Dotaz vrátí odhadovanou rozšířenou velikost tabulky v bajtech. Úspěšné provedení tohoto dotazu také potvrzuje, že bezserverové výpočetní prostředky mají přístup ke zdrojové tabulce.
SELECT sum(length(to_csv(struct(*)))) FROM `source_table`;
Události
Staňte se certifikovaným Datoví technici fabric
14. 1. 23 - 31. 3. 23
Zkontrolujte, jestli máte nárok na nabídku slev na zkoušku, a zaregistrujte se na bezplatné živé relace a připravte se na zkoušku DP-700.
Další informaceŠkolení
Modul
Optimalizace výkonu pomocí sparkových a delta živých tabulek - Training
Optimalizujte výkon pomocí živých tabulek Spark a Delta v Azure Databricks.
Dokumentace
Co je služba funkcí Databricks? – Azure Databricks
Funkce Obsluha poskytuje strukturovaná data pro aplikace RAG a zpřístupňuje data v platformě Databricks pro aplikace nasazené mimo Databricks.
Publikování funkcí do online obchodu – Azure Databricks
Seznamte se s funkcemi publikování do online obchodů s úložištěm funkcí Databricks.
Automatické vyhledávání funkcí pomocí obsluhy modelů Databricks – Azure Databricks
Naučte se používat databricks bezserverové odvozování v reálném čase a úložiště funkcí Databricks k automatickému vyhledávání hodnot funkcí z publikovaných online obchodů.