read (DataSourceReader)

Genererar data för en viss partition och returnerar en iterator med tupplar eller rader.

Den här metoden anropas en gång per partition för att läsa data. Implementering av den här metoden krävs för läsbara datakällor. Du kan initiera alla icke-serialiserbara resurser som krävs för att läsa data från datakällan i den här metoden.

Syntax

read(partition: InputPartition)

Parameters

Parameter Type Beskrivning
partition InputPartition Partitionen som ska läsas. Det måste vara ett av partitionsvärdena som returneras av partitions().

Retur

Iterator[Tuple] eller Iterator[RecordBatch]

En iterator med tupplar eller rader. Varje tupppel eller rad konverteras till en rad i den slutliga dataramen. Den kan också returnera en iterator av PyArrow-objekt RecordBatch om datakällan stöder det.

Exempel

Ger en lista över tupplar:

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

Ger en lista med rader:

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

Ger PyArrow-objekt 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