Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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.
Feljegyzés
A Databricks emellett támogatja a UNION, INTERSECTés EXCEPThalmazműveletek standard szintaxisát. 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.
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:
- Mi az állapotalapú streamelés?
- Vízjelek alkalmazása az adatfeldolgozási küszöbértékek szabályozásához
- Streamek összekapcsolása
A Databricks azt javasolja, hogy minden stream-stream csatlakozás mindkét oldalához adjon meg vízjeleket. 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-stream illesztésekről.
Stream-statikus csatlakozások
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 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ó útmutatások hasznosak lehetnek, ha az illesztési teljesítmény gyenge, és egyenlőtlenségi csatolásokat végez. Ilyenek például az időbélyeg-tartományokhoz való csatlakozás vagy a fürtözési azonosítók tartománya. Tekintse meg a tartományillesztés optimalizálását és az illesztési teljesítmény optimalizálását az Azure Databricksben.