Pular para o conteúdo principal

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

Python
from pyspark.sql.datasource import DataSource

class MyDataSource(DataSource):
@classmethod
def name(cls):
return "my_data_source"

Parâmetros

Parâmetro

Tipo

Descrição

options

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

name()

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.

schema()

Retorna o esquema da fonte de dados como uma string StructType ou DDL. Caso não seja implementado e nenhum esquema seja fornecido pelo usuário, uma exceção será lançada.

reader(schema)

Retorna uma instância DataSourceReader para leitura de dados. Obrigatório para fonte de dados legível.

writer(schema, overwrite)

Retorna uma instância DataSourceWriter para escrita de dados. Obrigatório para fontes de dados graváveis.

streamWriter(schema, overwrite)

Retorna uma instância DataSourceStreamWriter para gravar dados em um coletor de transmissão. Necessário para transmissão de fonte de dados gravável.

simpleStreamReader(schema)

Retorna uma instância SimpleDataSourceStreamReader para leitura de dados de transmissão. Utilizado apenas quando streamReader() não estiver implementado.

streamReader(schema)

Retorna uma instância DataSourceStreamReader para leitura de dados de transmissão. Tem prioridade sobre simpleStreamReader().

Exemplos

Defina e registre uma fonte de dados legível personalizada:

Python
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 :

Python
from pyspark.sql.types import StructType, StructField, IntegerType, StringType

class MyDataSource(DataSource):
def schema(self):
return StructType().add("a", "int").add("b", "string")