read (DataSourceReader)

Создает данные для заданной секции и возвращает итератор кортежей или строк.

Этот метод вызывается один раз на секцию для чтения данных. Реализация этого метода необходима для доступных для чтения источников данных. Вы можете инициализировать любые несериализируемые ресурсы, необходимые для чтения данных из источника данных в этом методе.

Синтаксис

read(partition: InputPartition)

Параметры

Параметр Тип Описание
partition InputPartition Раздел для чтения. Оно должно быть одним из значений секций, возвращаемых partitions().

Возвраты

Iterator[Tuple] или Iterator[RecordBatch]

Итератор кортежей или строк. Каждый кортеж или строка будут преобразованы в строку в окончательном кадре данных. Он также может возвращать итератор объектов PyArrow RecordBatch , если источник данных поддерживает его.

Примеры

Возвращает список кортежей:

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