Automatikus betöltő konfigurálása éles számítási feladatokhoz
A Databricks azt javasolja, hogy kövesse az automatikus betöltő éles környezetben való futtatásához ajánlott streamelési eljárásokat .
A Databricks az automatikus betöltő használatát javasolja a Delta Live Tablesben a növekményes adatbetöltéshez. A Delta Live Tables kibővíti az Apache Spark strukturált streamelési funkcióit, és lehetővé teszi, hogy csak néhány sor deklaratív Pythont vagy SQL-t írjon egy éles minőségű adatfolyam üzembe helyezéséhez a következőkkel:
- Számítási infrastruktúra automatikus skálázása költségmegtakarítás érdekében
- Adatminőség-ellenőrzések az elvárásokkal
- Automatikus sémafejlődés kezelése
- Monitorozás metrikákkal az eseménynaplóban
Automatikus betöltő figyelése
Az automatikus betöltő által felderített fájlok lekérdezése
Feljegyzés
A cloud_files_state
függvény a Databricks Runtime 11.3 LTS-ben és újabb verziókban érhető el.
Az Automatikus betöltő egy SQL API-t biztosít a stream állapotának vizsgálatához. A cloud_files_state
függvény használatával metaadatokat talál az automatikus betöltő stream által felderített fájlokról. Egyszerűen lekérdezés az cloud_files_state
automatikus betöltő streamhez társított ellenőrzőpont helyének megadásával.
SELECT * FROM cloud_files_state('path/to/checkpoint');
Streamfrissítések figyelése
Az automatikus betöltő streamek további figyeléséhez a Databricks az Apache Spark Stream Query Listener felületének használatát javasolja.
Az Automatikus betöltő minden kötegben jelentést készít a streamelési lekérdezés figyelőjének. Megtekintheti, hogy hány fájl található a hátralékban, és hogy mekkora a hátralék a numFilesOutstanding
numBytesOutstanding
streamelési lekérdezés folyamatának irányítópultján, a Nyers adatok lap metrikái között:
{
"sources" : [
{
"description" : "CloudFilesSource[/path/to/source]",
"metrics" : {
"numFilesOutstanding" : "238",
"numBytesOutstanding" : "163939124006"
}
}
]
}
A Databricks Runtime 10.4 LTS-ben és újabb verziókban a metrika a fájlértesítési mód használatakor a felhőbeli várólistán lévő fájlesemények hozzávetőleges számát is tartalmazza, mint approximateQueueSize
az AWS és az Azure esetében.
Költségekkel kapcsolatos szempontok
Az automatikus betöltő futtatásakor a költségek fő forrása a számítási erőforrások és a fájlfelderítés költsége lesz.
A számítási költségek csökkentése érdekében a Databricks azt javasolja, hogy a Databricks-feladatok használatával ütemezze az automatikus betöltőt kötegelt feladatként Trigger.AvailableNow
ahelyett, hogy folyamatosan futtatja, feltéve, hogy nincsenek alacsony késési követelmények. Lásd: Strukturált streamelési eseményindítók időközeinek konfigurálása.
A fájlfelderítési költségek listázási műveletek formájában merülhetnek fel a tárfiókokon címtárlistázási módban és API-kérésekben az előfizetési szolgáltatásban, valamint üzenetsor-szolgáltatás fájlértesítési módban. A fájlfelderítési költségek csökkentése érdekében a Databricks a következőket javasolja:
- Eseményindító megadása
ProcessingTime
az Automatikus betöltő folyamatos címtár-lista módban történő futtatásakor - Fájlfeltöltések létrehozása a tárfiókba lexikális sorrendben a növekményes listaelem (elavult) lehetőség szerinti kihasználása érdekében
- Fájlértesítések használata, ha a növekményes listaelem nem lehetséges
- Erőforráscímkék használata az Automatikus betöltő által létrehozott erőforrások címkézéséhez a költségek nyomon követéséhez
A Trigger.AvailableNow és a sebességkorlátozás használata
Feljegyzés
A Databricks Runtime 10.4 LTS-ben és újabb verziókban érhető el.
Az automatikus betöltő ütemezhető úgy, hogy a Databricks-feladatokban kötegelt feladatként fusson a használatával Trigger.AvailableNow
. Az AvailableNow
eseményindító arra utasítja az Automatikus betöltőt, hogy dolgozza fel a lekérdezés kezdési időpontja előtt érkezett összes fájlt. A stream elindítása után feltöltött új fájlokat a rendszer a következő eseményindítóig figyelmen kívül hagyja.
A Trigger.AvailableNow
fájlfelderítés aszinkron módon történik az adatfeldolgozással, és az adatok több, sebességkorlátozással rendelkező mikro kötegben is feldolgozhatók. Az automatikus betöltő alapértelmezés szerint mikrokötegenként legfeljebb 1000 fájlt dolgoz fel. Konfigurálhatja cloudFiles.maxFilesPerTrigger
és cloudFiles.maxBytesPerTrigger
konfigurálhatja, hogy hány fájlt vagy hány bájtot kell feldolgozni egy mikrokötegben. A fájlkorlát egy kemény korlát, de a bájtkorlát egy helyreállítható korlát, ami azt jelenti, hogy a megadottnál maxBytesPerTrigger
több bájtot lehet feldolgozni. Ha a beállítások egyszerre vannak megadva, az Automatikus betöltő annyi fájlt dolgoz fel, amennyi a korlátok egyikének eléréséhez szükséges.
Eseménymegőrzés
Az Automatikus betöltő nyomon követi a felderített fájlokat az ellenőrzőpont helyén a RocksDB használatával, hogy pontosan egyszeri betöltési garanciákat biztosítson. A Databricks határozottan azt javasolja, hogy minden nagy mennyiségű vagy hosszú élettartamú betöltési streamhez használja a cloudFiles.maxFileAge
lehetőséget. Ez a beállítás lejár az ellenőrzőpont helyről származó eseményeket, ami felgyorsítja az automatikus betöltő indítási idejét. Az indítási idő az automatikus betöltő futtatásonkénti percekre nőhet, ami szükségtelen költséggel jár, ha a forráskönyvtárban tárolt fájlok maximális életkorának felső határa van. A minimális érték, amelyet beállíthatcloudFiles.maxFileAge
, az ."14 days"
A RocksDB-beli törlések sírkőbejegyzésekként jelennek meg, ezért a tárterület használatának ideiglenes növekedésére kell számítania, mivel az események lejárnak, mielőtt elkezdené a simítást.
Figyelmeztetés
cloudFiles.maxFileAge
a nagy mennyiségű adathalmazok költségszabályozási mechanizmusaként érhető el. A túl agresszív hangolás cloudFiles.maxFileAge
adatminőségi problémákat, például duplikált betöltést vagy hiányzó fájlokat okozhat. Ezért a Databricks egy konzervatív beállítást cloudFiles.maxFileAge
javasol , például 90 napig, ami hasonló ahhoz, amit az összehasonlítható adatbetöltési megoldások javasolnak.
A beállítás finomhangolása azt eredményezheti, hogy az cloudFiles.maxFileAge
automatikus betöltő figyelmen kívül hagyja a feldolgozatlan fájlokat, vagy a már feldolgozott fájlok lejárnak, majd újra feldolgozzák, ami ismétlődő adatokat okoz. Az alábbiakban néhány szempontot érdemes figyelembe venni a cloudFiles.maxFileAge
következők kiválasztásakor:
- Ha a stream hosszú idő után újraindul, a rendszer figyelmen kívül hagyja az üzenetsorból
cloudFiles.maxFileAge
lekért fájlértesítési eseményeket. Hasonlóképpen, ha címtárlistát használ, a figyelmen kívül hagyottnálcloudFiles.maxFileAge
régebbi fájlok is megjelenhettek a leállás ideje alatt. - Ha címtár-listázási módot használ
cloudFiles.maxFileAge
, és például a következőre"1 month"
van állítva, állítsa le a streamet, és indítsa újra a streametcloudFiles.maxFileAge
"2 months"
az 1 hónapnál régebbi, de 2 hónapnál régebbi fájlok újrafeldolgozásával.
Ha ezt a beállítást a stream első indításakor állítja be, akkor nem fog régebbi cloudFiles.maxFileAge
adatokat befogni, ezért ha régi adatokat szeretne befogni, akkor ezt a beállítást ne állítsa be a stream első indításakor. Ezt a beállítást azonban a későbbi futtatásokhoz kell beállítania.
Rendszeres visszatöltések aktiválása a cloudFiles.backfillInterval használatával
Az automatikus betöltő képes aszinkron visszatöltéseket aktiválni egy adott időközönként, például naponta egyszer, vagy hetente egyszer. A fájlesemény-értesítési rendszerek nem garantálják a feltöltött fájlok 100%-os kézbesítését, és nem biztosítanak szigorú SLA-kat a fájlesemények késéséhez. A Databricks azt javasolja, hogy rendszeres háttérbetöltéseket aktiváljon az Automatikus betöltővel. Ezzel a cloudFiles.backfillInterval
beállítással garantálható, hogy minden fájl felderítve legyen egy adott SLA-on belül, ha az adatok teljessége követelmény. A normál visszatöltések aktiválása nem okoz duplikációkat.