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


Csatlakozások használata az Azure Databricksben

A Databricks támogatja az ANSI standard illesztési szintaxisát. Ez a cikk a köteg- és streamfeldolgozási illesztések közötti különbségeket ismerteti, és javaslatokat tartalmaz az illesztési teljesítmény optimalizálására.

Feljegyzés

A Databricks emellett támogatja a halmaz operátorainak UNIONstandard szintaxisát is. INTERSECTEXCEPT Lásd: Operátorok beállítása.

A streamelés és a kötegcsatlakozások közötti különbségek

Az Azure Databrickshez való csatlakozások állapotalapúak vagy állapot nélküliek.

Minden kötegcsatlakozás állapot nélküli illesztés. Az eredmények azonnal feldolgozásra kerülnek, és a lekérdezés futtatásakor tükrözik az adatokat. A lekérdezés minden végrehajtásakor a rendszer a megadott forrásadatok alapján számítja ki az új eredményeket. Lásd: Batch-illesztések.

A két streamelési adatforrás közötti illesztések állapotalapúak. Állapotalapú illesztések esetén az Azure Databricks nyomon követi az adatforrásokkal és az eredményekkel kapcsolatos információkat, és iteratív módon frissíti az eredményeket. Az állapotalapú illesztések hatékony megoldásokat nyújthatnak az online adatfeldolgozáshoz, de hatékonyan nehezen implementálhatók. A kimeneti módtól, a triggerintervallumtól és a vízjeltől függően összetett működési szemantikával rendelkeznek. Tekintse meg a Stream-stream illesztések című témakört.

A stream-statikus illesztések állapot nélküliek, de jó lehetőséget nyújtanak növekményes adatforrások (például ténytáblák) statikus adatforráshoz (például lassan változó dimenziós táblázathoz) való csatlakoztatásához. Ahelyett, hogy minden egyes lekérdezés végrehajtásakor mindkét oldalról csatlakozna az összes rekordhoz, csak a streamforrásból újonnan kapott rekordok lesznek összekapcsolva a statikus tábla aktuális verziójával. Lásd: Stream-statikus illesztések.

Batch-illesztések

Az Azure Databricks támogatja a szabványos SQL-illesztési szintaxist, beleértve a belső, külső, félig, anti és kereszt illesztéseket. Lásd: JOIN.

Feljegyzés

A Databricks egy materializált nézet használatát javasolja a belső illesztés eredményeinek növekményes számításának optimalizálásához. Lásd: Materializált nézetek használata a Databricks SQL-ben.

Stream-stream illesztések

Két streamelési adatforrás csatlakoztatása jelentős kihívást jelenthet az állapotinformációk kezelése és az eredmények számításával és kimenetével kapcsolatos érvelés terén. A Stream-stream illesztés implementálása előtt a Databricks azt javasolja, hogy az állapotalapú streamelés operatív szemantikájának alapos ismerete legyen, beleértve azt is, hogy a vízjelek hogyan befolyásolják az állapotkezelést. Tekintse meg az alábbi cikkeket:

A Databricks javasolja a vízjelek megadását az összes stream-gőz illesztés mindkét oldalán. A következő illesztéstípusok támogatottak:

  • Belső illesztések
  • Bal oldali külső illesztések
  • Jobb oldali külső illesztések
  • Teljes külső illesztések
  • Bal oldali félillesztések

Tekintse meg az Apache Spark strukturált streamelési dokumentációját a stream-steam illesztésekről.

Stream-statikus illesztések

Feljegyzés

A stream-statikus illesztések leírt viselkedése feltételezi, hogy a statikus adatok tárolása a Delta Lake használatával történik.

A stream-statikus illesztések állapot nélküli illesztés használatával csatlakoztatják a Delta-tábla legújabb érvényes verzióját (a statikus adatokat) egy adatfolyamhoz.

Amikor az Azure Databricks stream-statikus illesztésben dolgoz fel egy mikroköteget, a statikus Delta-tábla adatainak legújabb érvényes verziója csatlakozik az aktuális mikrokötegben található rekordokkal. Mivel az illesztés állapot nélküli, nem kell konfigurálnia a vízjelezést, és alacsony késéssel tudja feldolgozni az eredményeket. Az illesztésben használt statikus Delta tábla adatainak lassan kell változnia.

Az alábbi példa ezt a mintát mutatja be:

streamingDF = spark.readStream.table("orders")
staticDF = spark.read.table("customers")

query = (streamingDF
  .join(staticDF, streamingDF.customer_id==staticDF.id, "inner")
  .writeStream
  .option("checkpointLocation", checkpoint_path)
  .table("orders_with_customer_info")
)

Csatlakozási teljesítmény optimalizálása

A Photon-kompatibilis számítás mindig a legjobb illesztéstípust választja. Lásd: Mi a Photon?.

A Databricks runtime legújabb verziójának Photon-kompatibilis használata általában jó illesztési teljesítményt nyújt, de érdemes megfontolni a következő javaslatokat is:

  • A keresztcsatlakozások nagyon drágák. Távolítsa el a keresztcsatlakozásokat az alacsony késést vagy gyakori újraszámítást igénylő számítási feladatokból és lekérdezésekből.
  • A csatlakozási sorrend számít. Több illesztés végrehajtásakor mindig először a legkisebb táblákat csatlakoztassa, majd csatlakozzon az eredményhez nagyobb táblákkal.
  • Az optimalizáló számos illesztéssel és aggregációval rendelkező lekérdezésekkel is küzdhet. A köztes eredmények mentése felgyorsíthatja a lekérdezéstervezést és a számítási eredményeket.
  • A teljesítmény javítása érdekében őrizze meg a friss statisztikákat. Futtassa a lekérdezést ANALYZE TABLE table_name COMPUTE STATISTICS a lekérdezéstervező statisztikáinak frissítéséhez.

Feljegyzés

A Databricks Runtime 14.3 LTS-ben és újabb verziókban módosíthatja azokat az oszlopokat, amelyeken a Delta Lake adatokat gyűjt az adatok kihagyása céljából, majd újrafordíthatja a meglévő statisztikákat a Delta-naplóban. Lásd: Deltastatisztikai oszlopok megadása.

Csatlakozási tippek az Azure Databrickshez

Az Apache Spark támogatja az illesztési tippek megadását a tartományillesztésekhez és a ferde illesztésekhez. A ferde illesztésekre vonatkozó tippekre nincs szükség, mivel az Azure Databricks automatikusan optimalizálja ezeket az illesztéseket. Lásd: Tippek

A tartományillesztésekre vonatkozó tippek akkor lehetnek hasznosak, ha az illesztési teljesítmény gyenge, és egyenlőtlenségi illesztéseket hajt végre. Ilyenek például az időbélyeg-tartományokhoz való csatlakozás vagy a fürtözési azonosítók tartománya. Lásd: Tartományillesztés optimalizálása.