Zdroj dat

Základní třída pro zdroje dat.

Tato třída představuje vlastní zdroj dat, který umožňuje čtení z a/nebo zápisu do ní. Zdroj dat poskytuje metody pro vytváření čtenářů a zapisovačů pro čtení a zápis dat v uvedeném pořadí. Alespoň jedna z metod reader() nebo writer() musí být implementována libovolnou podtřídou, aby byl zdroj dat čitelný nebo zapisovatelný (nebo obojí).

Po implementaci tohoto rozhraní můžete načíst zdroj dat pomocí spark.read.format(...).load() a uložit data pomocí df.write.format(...).save().

Další informace najdete v tématu Vlastní zdroje dat PySpark.

Syntaxe

from pyspark.sql.datasource import DataSource

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

Parametry

Parameter Typ Description
options slovník Slovník nerozlišující malá a velká písmena představující možnosti pro tento zdroj dat

Methods

Metoda Description
name() Vrátí řetězec představující název formátu tohoto zdroje dat. Ve výchozím nastavení vrátí název třídy. Přepsání pro zadání přizpůsobeného krátkého názvu
schema() Vrátí schéma zdroje dat jako StructType řetězec DDL. Pokud není implementováno a uživatel neposkytuje žádné schéma, vyvolá se výjimka.
reader(schema) DataSourceReader Vrátí instanci pro čtení dat. Vyžaduje se pro čitelné zdroje dat.
writer(schema, overwrite) DataSourceWriter Vrátí instanci pro zápis dat. Vyžaduje se pro zapisovatelné zdroje dat.
streamWriter(schema, overwrite) DataSourceStreamWriter Vrátí instanci pro zápis dat do jímky streamování. Vyžaduje se pro zapisovatelné streamované zdroje dat.
simpleStreamReader(schema) SimpleDataSourceStreamReader Vrátí instanci pro čtení streamovaných dat. Používá se pouze v případech, kdy streamReader() není implementováno.
streamReader(schema) DataSourceStreamReader Vrátí instanci pro čtení streamovaných dat. Má přednost před simpleStreamReader().

Příklady

Definujte a zaregistrujte vlastní čitelný zdroj dat:

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()

Definujte zdroj dat se schématem StructType :

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

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