read (DataSourceReader)

Génère des données pour une partition donnée et retourne un itérateur de tuples ou de lignes.

Cette méthode est appelée une fois par partition pour lire les données. L’implémentation de cette méthode est requise pour les sources de données lisibles. Vous pouvez initialiser toutes les ressources non sérialisables requises pour lire des données à partir de la source de données au sein de cette méthode.

Syntaxe

read(partition: InputPartition)

Paramètres

Paramètre Type Description
partition InputPartition Partition à lire. Il doit s’agir de l’une des valeurs de partition retournées par partitions().

Retours

Iterator[Tuple] ou Iterator[RecordBatch]

Itérateur de tuples ou de lignes. Chaque tuple ou ligne est converti en ligne dans le DataFrame final. Il peut également retourner un itérateur d’objets PyArrow RecordBatch si la source de données la prend en charge.

Exemples

Génère une liste de tuples :

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

Génère une liste de lignes :

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

Génère des objets 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