Condividi tramite


write (DataSourceStreamArrowWriter)

Scrive un iteratore di oggetti PyArrow RecordBatch nel sink di streaming.

Questo metodo viene chiamato su executor per scrivere dati nel sink di dati di streaming in ogni microbatch. Accetta un iteratore di oggetti PyArrow RecordBatch e restituisce una singola riga che rappresenta un messaggio di commit o None se non è presente alcun messaggio di commit.

Il driver raccoglie i messaggi di commit, se presenti, da tutti gli executor e li passa al commit() metodo se tutte le attività vengono eseguite correttamente. Se un'attività ha esito negativo, il abort() metodo verrà chiamato con i messaggi di commit raccolti.

Sintassi

write(iterator: Iterator[RecordBatch])

Parametri

Parametro Tipo Descrizione
iterator Iteratore[RecordBatch] Iteratore di oggetti PyArrow RecordBatch che rappresentano i dati di input.

Restituzioni

WriterCommitMessage

Messaggio di commit serializzabile.

Examples

from dataclasses import dataclass

@dataclass
class MyCommitMessage(WriterCommitMessage):
    num_rows: int
    batch_id: int

def write(self, iterator: Iterator["RecordBatch"]) -> "WriterCommitMessage":
    total_rows = 0
    for batch in iterator:
        total_rows += len(batch)
    return MyCommitMessage(num_rows=total_rows, batch_id=self.current_batch_id)