Fonte de dados
Uma classe base para fonte de dados.
Esta classe representa uma fonte de dados personalizada que permite a leitura e/ou escrita na mesma. A fonte de dados fornece métodos para criar leitores e escritores para leitura e escrita de dados, respectivamente. Pelo menos um dos métodos reader() ou writer() deve ser implementado por qualquer subclasse para tornar a fonte de dados legível ou gravável (ou ambas).
Após implementar esta interface, você pode carregar sua fonte de dados usando spark.read.format(...).load() e salvar uso de dados df.write.format(...).save().
Sintaxe
from pyspark.sql.datasource import DataSource
class MyDataSource(DataSource):
@classmethod
def name(cls):
return "my_data_source"
Parâmetros
Parâmetro | Tipo | Descrição |
|---|---|---|
| dicionário | Um dicionário que não diferencia maiúsculas de minúsculas representando as opções para esta fonte de dados. |
Métodos
Método | Descrição |
|---|---|
Retorna uma string representando o nome do formato desta fonte de dados. Por default, retorna o nome da classe. Substitua o valor para fornecer um nome curto personalizado. | |
Retorna o esquema da fonte de dados como uma string | |
Retorna uma instância | |
Retorna uma instância | |
| Retorna uma instância |
| Retorna uma instância |
Retorna uma instância |
Exemplos
Defina e registre uma fonte de dados legível personalizada:
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()
Defina uma fonte de dados com um esquema StructType :
from pyspark.sql.types import StructType, StructField, IntegerType, StringType
class MyDataSource(DataSource):
def schema(self):
return StructType().add("a", "int").add("b", "string")