Source de données
Classe de base pour les source de données.
Cette classe représente une source de données personnalisée qui permet d’y lire des données et/ou d’y écrire des données. La source de données fournit des méthodes pour créer des lecteurs et des rédacteurs pour la lecture et l’écriture de données, respectivement. Au moins l'une des méthodes reader() ou writer() doit être implémentée par toute sous-classe afin de rendre la source de données lisible ou modifiable (voire les deux).
Après avoir implémenté cette interface, vous pouvez charger votre source de données à l'aide de spark.read.format(...).load() et enregistrer les données à l'aide de df.write.format(...).save().
Pour plus d'informations, consultez sources de données personnalisées PySpark.
Syntaxe
from pyspark.sql.datasource import DataSource
class MyDataSource(DataSource):
@classmethod
def name(cls):
return "my_data_source"
parameter
parameter | Type | Description |
|---|---|---|
| dict | Un dictionnaire insensible à la casse représentant les options pour cette source de données. |
Méthodes
Méthode | Description |
|---|---|
Renvoie une chaîne représentant le nom de format de cette source de données. By default, returns the class name. Remplacer pour fournir un nom abrégé personnalisé. | |
Renvoie le schéma de la source de données en tant que | |
Renvoie une instance | |
Renvoie une instance | |
Renvoie une instance | |
Renvoie une instance | |
Renvoie une instance |
Exemples
Définissez et enregistrez une source de données lisible personnalisée :
from pyspark.sql.datasource import DataSource, DataSourceReader, InputPartition
class MyDataSource(DataSource):
@classmethod
def name(cls):
return "my_data_source"
def schema(self):
return "a INT, b STRING"
def reader(self, schema):
return MyDataSourceReader(schema)
class MyDataSourceReader(DataSourceReader):
def read(self, partition):
yield (1, "hello")
yield (2, "world")
spark.dataSource.register(MyDataSource)
df = spark.read.format("my_data_source").load()
df.show()
Définissez une source de données avec un schéma StructType :
from pyspark.sql.types import StructType, StructField, IntegerType, StringType
class MyDataSource(DataSource):
def schema(self):
return StructType().add("a", "int").add("b", "string")