Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A @dp.foreach_sink() dekorátor egy ForEach sink-et határoz meg, amely egy soronként dolgozza fel az áramlatot egyedi Python logikával. Az elnyelőt targetappend flow-ban vagy frissítési folyamatként hivatkozod az adatok megírásához. A koncepcionális útmutatásért, megfontolásért és példákért lásd: Használj egy ForEach sinket a pipelines sorainak megírásához. Ha minden mikro-adag adatkeretként dolgozza fel, lásd foreach_batch_sink.
Syntax
A ForEach mosogató meghatározásához egy függvényből díszítsük a függvényt a következőkkel @dp.foreach_sink():
from pyspark import pipelines as dp
@dp.foreach_sink(name="<name>")
def row_handler(row):
"""
Required:
- `row`: a Row that contains one record of the stream.
"""
# Your custom write logic here.
# This function runs on the executors, so import any libraries it uses inside the function.
Egy író objektumból történő ForEach sink definiálásához hívjuk dp.foreach_sink() és továbbítsuk az objektumot az argumentummal writer :
from pyspark import pipelines as dp
class RowWriter:
def open(self, partition_id, epoch_id):
# Optional. Return False to skip the rows of this partition.
return True
def process(self, row):
# Required. Called for each row.
...
def close(self, error):
# Optional. `error` is None if processing succeeded.
...
dp.foreach_sink(name="<name>", writer=RowWriter())
A dp.foreach_sink() függvényt is továbbíthatod az func argumentummal a dekorátor helyett, például dp.foreach_sink(name="<name>", func=row_handler).
Parameters
| Paraméter | Description |
|---|---|
| sor | Required. A, Row amely tartalmaz egy adatfolyam felvételét. A te funkciód, vagyis process az íród módszere, minden híváshoz egy sort kap. |
| name | Optional. Egyedi név a csatornán belüli nyelő azonosításához. Alapértelmezés a függvény nevére van jellemző. Egy író objektumnál alapértelmezés szerint kisbetűs osztálynévre van írva. |
| func | Optional. Az a függvény, amit a csővezeték minden sorra hív. Használd func , amikor közvetlenül hívsz dp.foreach_sink() , nem dekorátorként. Nem tudod átmenni mindkettőt func , és writer. |
| writer | Optional. Egy objektum, amely megvalósítja a process(row) metódust, és opcionálisan az open(partition_id, epoch_id) és close(error) metódusokat. Add át kulcsszavaként az érvet. Nem tudod átmenni mindkettőt func , és writer. |
Írói módszerek
Egy írói objektum ugyanazokat a módszereket használja, mint az Apache Spark Structured Streaming foreach író. Minden mikro-tétel partíciójához a csővezeték hívja open, majd minden sort hív process , ha open visszaadja True, és aztán hívja close. A Strukturált Streamingben egyedi kimenetek írásáról információért lásd: Use foreachBatch to write to write to random data sink.
| Method | Description |
|---|---|
open(partition_id, epoch_id) |
Optional. A csővezeték ezt a módszert hívja, mielőtt feldolgozná a partíció sorait egy mikro-batch esetében. Használd kapcsolatok megnyitására vagy tranzakciók indítására. Return True a partíció sorainak feldolgozásához vagy False kihagyásához. Ha az író nem definiálja open, a csővezeték feldolgozza az egyes partíciók sorait.
partition_id és epoch_id ismétlődhet olyan folyamatokon is, amelyek ugyanahhoz a vízgyűjtőhöz írnak, teljes frissítés után. Mielőtt ezeket használnád sorok deduplikálására, lásd a hibák kezelését és a sorok duplikálását. |
process(row) |
Required. A csővezeték minden sorra ezt a módszert hívja. |
close(error) |
Optional. A csővezeték ezt a módszert a partíció sorai feldolgozása után hívja meg.
error ez a kivétel, amely sorfeldolgozás közben történt, vagy None ha a feldolgozás sikeres volt. Használd a kapcsolatok lezárására. Ha open tranzakciót indítanak, csak akkor kötelezd fel, ha error van None, és akkor vissza a visszajelzést. |