Kép
Fontos
A Databricks azt javasolja, hogy a bináris fájl adatforrásával töltsön be képadatokat a Spark DataFrame-be nyers bájtként. Lásd : Referenciamegoldás képalkalmazásokhoz az ajánlott munkafolyamathoz a képadatok kezeléséhez.
A kép adatforrása elvonja a képmegjelenések részleteit, és szabványos API-t biztosít a képadatok betöltéséhez. Képfájlok olvasásához adja meg az adatforrást format
a következőként image
: .
df = spark.read.format("image").load("<path-to-image-data>")
Hasonló API-k léteznek a Scala, a Java és az R esetében.
Importálhat beágyazott könyvtárstruktúrát (például használhat egy elérési utat), /path/to/dir/
és a partíciófelderítést használhatja egy partíciókönyvtárral (például egy elérési /path/to/dir/date=2018-01-02/category=automobile
úttal) rendelkező elérési út megadásával.
Képstruktúra
A rendszer a képfájlokat DataFrame-ként tölti be, amely egyetlen strukturálási típusú oszlopot tartalmaz, amelynek neve a következő mezőkkel van meghívva image
:
image: struct containing all the image data
|-- origin: string representing the source URI
|-- height: integer, image height in pixels
|-- width: integer, image width in pixels
|-- nChannels
|-- mode
|-- data
ahol a mezők a következők:
nChannels
: A színcsatornák száma. A jellemző értékek a szürkeárnyalatos képeknél 1, a színes képeknél 3 (például RGB), a színes képeknél pedig 4 alfa csatornával.mode
: Egész szám jelölő, amely az adatmező értelmezését jelzi. Megadja az adatok adattípusát és csatornasorrendét. A mező értéke várhatóan (de nem kényszerítve) megfeleltethető az alábbi táblázatban megjelenített OpenCV-típusok egyikének. Az OpenCV-típusok 1, 2, 3 vagy 4 csatornához és több adattípushoz vannak definiálva a képpontértékekhez. A csatorna sorrendje határozza meg a színek tárolási sorrendjét. Ha például egy tipikus háromcsatornás rendszerkép piros, kék és zöld összetevőkkel rendelkezik, hat lehetséges sorrend áll rendelkezésre. A legtöbb kódtár RGB-t vagy BGR-t használ. Három (négy) csatornás OpenCV-típus várhatóan BGR(A) sorrendben lesz.Típustérkép számokhoz az OpenCV-ben (adattípusok x csatornák száma)
Típus C1 C2 C3 C4 CV_8U 0 8 16 24 CV_8S 0 9 17 25 CV_16U 2 10 18 26 CV_16S 3 11 19 27 CV_32U 4 12 20 28 CV_32S 5 13 21 29 CV_64F 6 14 22 30 data
: Bináris formátumban tárolt képadatok. A rendszer háromdimenziós tömbként jeleníti meg a képadatokat a módmező által megadott dimenzióalakzattal (magasság, szélesség, nChannels) és t típusú tömbértékekkel. A tömb sorszintű sorrendben van tárolva.
Képadatok megjelenítése
A Databricks display
függvény támogatja a képadatok megjelenítését. Lásd a képeket.
Példa jegyzetfüzetre: Adatok olvasása és írása képfájlokba
Az alábbi jegyzetfüzet bemutatja, hogyan olvashat és írhat adatokat képfájlokba.
Kép adatforrás-jegyzetfüzete
A kép adatforrásának korlátozásai
A kép adatforrása dekódolja a képfájlokat a Spark DataFrame létrehozása során, növeli az adatméretet, és korlátozásokat vezet be a következő forgatókönyvekben:
- A DataFrame megőrzése: Ha a DataFrame-et egy Delta-táblában szeretné megőrizni a könnyebb hozzáférés érdekében, a dekódolt adatok helyett a nyers bájtokat kell megőriznie, hogy helyet takarítson meg.
- A partíciók elfojtása: A dekódolt képadatok elfojtása több lemezterületet és hálózati sávszélességet igényel, ami lassabb elegyítést eredményez. A lehető legnagyobb mértékben késleltetnie kell a kép dekódolását.
- Más dekódolási módszer kiválasztása: A kép adatforrása a javax rendszerkép IO-kódtárával dekódolja a képet, ami megakadályozza, hogy más képdekódoló kódtárakat válasszon a jobb teljesítmény érdekében, vagy testre szabott dekódolási logikát implementáljon.
Ezeket a korlátozásokat elkerülheti, ha a bináris fájl adatforrásával betölti a képadatokat, és csak szükség szerint dekódolja őket.