Python használata különálló folyamatláncokkal

Különálló materializált nézeteket és streamelő táblákat hozhat létre és frissíthet egy jegyzetfüzetből Python használatával. Hozza létre a folyamatot egy Python-jegyzetfüzetben, és futtassa a(z) spark.sql() használatával. Így a többi Python-alapú jegyzetfüzet-munkafolyamat mellett önálló folyamatokat is kezelhet.

Az önálló folyamatok Python-forrásához egy, a kiszolgáló nélküli általános számítási környezethez csatlakoztatott notebook szükséges. A Python nem használható önálló folyamatok létrehozására vagy frissítésére a Databricks SQL Warehouse-ból, mert egy raktár SQL-utasításokat futtat, nem Python jegyzetfüzeteket. Ha inkább SQL Warehouse-t szeretne használni, olvassa el az önálló materializált nézetek ésaz önálló streamelési táblák használata című témakört.

Important

Az önálló materializált nézetek és streamelési táblák létrehozása és frissítése egy jegyzetfüzetből a kiszolgáló nélküli általános számításban bétaverzióban érhető el, és bizonyos régiókban érhető el. Lásd : Jegyzetfüzetek.

Requirements

Az önálló adatfolyamok Pythonnal történő létrehozásához és frissítéséhez egy, a Databricks Runtime 18.1-es vagy újabb verzióján futó, szerver nélküli általános számítási erőforráshoz csatlakoztatott jegyzetfüzetre van szükség. A követelmények teljes listájáért, beleértve a regionális rendelkezésre állást és az engedélyeket, olvassa el a Jegyzetfüzetek című témakört.

Hogyan működik?

Egy Python-notebookban adja meg ugyanazokat az utasításokat, amelyeket egy Databricks SQL-warehouse-ból futtatna a spark.sql() számára. Az önálló materializált nézet és a streamelési táblázat szintaxisa megegyezik; csak az utasítás elküldésének módja különbözik. A raktárhoz hasonlóan mindegyik CREATE vagy REFRESH utasítás kiszolgáló nélküli folyamatot futtat a művelet feldolgozásához.

A spark munkamenet alapértelmezés szerint Azure Databricks jegyzetfüzetekben érhető el, ezért nincs szükség importálásra.

Materializált nézet létrehozása

Az alábbi példa létrehozza a materializált nézetet mv1 az alaptáblából base_table1:

spark.sql("""
  CREATE OR REPLACE MATERIALIZED VIEW mv1
  AS SELECT
    date,
    sum(sales) AS sum_of_sales
  FROM base_table1
  GROUP BY date
""")

A teljes CREATE MATERIALIZED VIEW részletekért, például az ütemezett és eseményindítású frissítésekről, lásd a következőt: Materializált nézet létrehozása.

Streaming tábla létrehozása

Az alábbi példa létrehozza a streamelési táblát sales a raw_data táblából:

spark.sql("""
  CREATE OR REFRESH STREAMING TABLE sales
  AS SELECT product, price FROM STREAM raw_data
""")

További részletekért CREATE STREAMING TABLE , beleértve a fájlok automatikus betöltővel való betöltését és az ütemezést, olvassa el az önálló streamelőtáblák használatát ismertető cikket.

Materializált nézet vagy streamingtábla frissítése

REFRESH Egy utasítással frissíthet egy különálló táblát a forrásból származó legfrissebb adatokkal:

spark.sql("REFRESH MATERIALIZED VIEW mv1")
spark.sql("REFRESH STREAMING TABLE sales")

A kiszolgáló nélküli általános számításban a frissítések szinkronban vannak. Az aszinkron frissítések (a ASYNC kulcsszó) nem támogatottak. Lásd : Kiszolgáló nélküli általános számítás.

Utasítások paraméterezése

Ha a Python-kódból szeretne értékeket egy utasításnak átadni ahelyett, hogy fixen beírná őket, használjon elnevezett paraméterjelölőket az SQL-ben, és az értékeiket a spark.sql()args argumentumán keresztül adja meg. Használjon jelölőt, például :min_sales közvetlenül a literális értékekhez. A jelölőt csak akkor burkolja be IDENTIFIER() , ha a paraméter egy objektumnév, például tábla, nézet vagy séma, mert az azonosítók nem helyettesíthetők egyszerű sztringértékekként.

Az alábbi példa paraméterezi a materializált nézet nevét és a szűrő értékét is:

mv_name = "main.sales.regional_sales"
min_sales = 1000

spark.sql("""
  CREATE OR REPLACE MATERIALIZED VIEW IDENTIFIER(:mv)
  AS SELECT
    region,
    sum(sales) AS sum_of_sales
  FROM base_table1
  WHERE sales > :min_sales
  GROUP BY region
""", args={
  "mv": mv_name,
  "min_sales": min_sales,
})

További információ: Paraméterjelölők és IDENTIFIER záradék.

Egyéb utasítások futtatása

Bármely különálló materializált nézetet vagy streamelési táblázatutasítást futtathat egy Python jegyzetfüzetből, ha átadja azt a jegyzetfüzetnekspark.sql(), beleértve a frissítések ütemezésére, a táblák módosítására vagy a táblák elvetésére vonatkozó utasításokat. A materializált nézetek és a streamelőtáblák ( beleértve az SQL szintaxisát) használatának megismeréséhez tekintse meg az önálló materializált nézetek és az önálló streamelési táblák használata című témakört.

Limitations

A kiszolgáló nélküli általános számításon létrehozott önálló materializált nézetek és streamtáblák további korlátozásokkal rendelkeznek, például nem támogatják az aszinkron frissítéseket, és nem rendelhetők táblaenkénti költségek. A teljes listát a Kiszolgáló nélküli általános számítás című témakörben találja.

További források