已閱讀(DataSourceReader)

為給定分割產生資料,並回傳一個元組或列的迭代器。

此方法在每個分割區中被呼叫一次以讀取資料。 實作此方法是取得可讀資料來源的必要條件。 你可以在這個方法中初始化任何非序列化資源,以讀取資料來源資料。

語法

read(partition: InputPartition)

參數

參數 類型 說明
partition 輸入分割 要讀取的分割區。 它必須是 所 partitions()回傳的分割值之一。

退貨

Iterator[Tuple]Iterator[RecordBatch]

一個由元組或列組成的迭代器。 每個元組或列都會在最終資料框架中轉換成一列。 如果資料來源支援,它也能回傳 PyArrow RecordBatch 物件的迭代器。

Examples

產生一個元組列表:

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

得到一列列:

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

產生 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