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_stateautomatikus 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 numFilesOutstandingnumBytesOutstanding 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.AvailableNowfá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 maxBytesPerTriggertö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.maxFileAgejavasol , 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.maxFileAgekö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ál cloudFiles.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 streamet cloudFiles.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.maxFileAgeadatokat 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.