Compartir a través de


Fuente de datos

Clase base para orígenes de datos.

Esta clase representa un origen de datos personalizado que permite leer desde y/o escribir en él. El origen de datos proporciona métodos para crear lectores y escritores para leer y escribir datos, respectivamente. Al menos uno de los métodos reader() o writer() debe implementarse en cualquier subclase para que el origen de datos sea legible o grabable (o ambos).

Después de implementar esta interfaz, puede cargar el origen de datos mediante spark.read.format(...).load() y guardar datos mediante df.write.format(...).save().

Sintaxis

from pyspark.sql.datasource import DataSource

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

Parámetros

Parámetro Tipo Descripción
options diccionario Diccionario que no distingue mayúsculas de minúsculas que representa las opciones de este origen de datos.

Methods

Método Descripción
name() Devuelve una cadena que representa el nombre de formato de este origen de datos. De forma predeterminada, devuelve el nombre de clase. Invalide para proporcionar un nombre corto personalizado.
schema() Devuelve el esquema del origen de datos como una StructType cadena DDL o . Si no se implementa y el usuario no proporciona ningún esquema, se produce una excepción.
reader(schema) Devuelve una DataSourceReader instancia de para leer datos. Necesario para orígenes de datos legibles.
writer(schema, overwrite) Devuelve una DataSourceWriter instancia de para escribir datos. Necesario para orígenes de datos grabables.
streamWriter(schema, overwrite) Devuelve una DataSourceStreamWriter instancia de para escribir datos en un receptor de streaming. Necesario para orígenes de datos de streaming grabables.
simpleStreamReader(schema) Devuelve una SimpleDataSourceStreamReader instancia de para leer datos de streaming. Se usa solo cuando streamReader() no se implementa.
streamReader(schema) Devuelve una DataSourceStreamReader instancia de para leer datos de streaming. Tiene prioridad sobre simpleStreamReader().

Ejemplos

Defina y registre un origen de datos legible personalizado:

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 un origen de datos con un StructType esquema:

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

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