Compartilhar via


read (DataSourceReader)

Gera dados para uma determinada partição e retorna um iterador de tuplas ou linhas.

Esse método é invocado uma vez por partição para ler os dados. A implementação desse método é necessária para fontes de dados legíveis. Você pode inicializar todos os recursos não serializáveis necessários para ler dados da fonte de dados dentro desse método.

Sintaxe

read(partition: InputPartition)

Parâmetros

Parâmetro Tipo Descrição
partition InputPartition A partição a ser lida. Deve ser um dos valores de partição retornados por partitions().

Devoluções

Iterator[Tuple] ou Iterator[RecordBatch]

Um iterador de tuplas ou linhas. Cada tupla ou linha será convertida em uma linha no DataFrame final. Ele também pode retornar um iterador de objetos PyArrow RecordBatch se a fonte de dados der suporte a ele.

Exemplos

Produz uma lista de tuplas:

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

Produz uma lista de linhas:

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

Produz 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