read (DataSourceReader)

Genera datos para una partición determinada y devuelve un iterador de tuplas o filas.

Este método se invoca una vez por partición para leer los datos. La implementación de este método es necesaria para orígenes de datos legibles. Puede inicializar los recursos no serializables necesarios para leer datos del origen de datos dentro de este método.

Sintaxis

read(partition: InputPartition)

Parámetros

Parámetro Tipo Descripción
partition InputPartition Partición que se va a leer. Debe ser uno de los valores de partición devueltos por partitions().

Devoluciones

Iterator[Tuple] o Iterator[RecordBatch]

Iterador de tuplas o filas. Cada tupla o fila se convertirá en una fila en el dataframe final. También puede devolver un iterador de objetos PyArrow RecordBatch si el origen de datos lo admite.

Ejemplos

Produce una lista de tuplas:

def read(self, partition: InputPartition):
    yield (partition.value, 0)
    yield (partition.value, 1)

Produce una lista de filas:

def read(self, partition: InputPartition):
    yield Row(partition=partition.value, value=0)
    yield Row(partition=partition.value, value=1)

Produce objetos PyArrow RecordBatch :

def read(self, partition: InputPartition):
    import pyarrow as pa
    data = {
        "partition": [partition.value] * 2,
        "value": [0, 1]
    }
    table = pa.Table.from_pydict(data)
    for batch in table.to_batches():
        yield batch