Sumber Data

Kelas dasar untuk sumber data.

Kelas ini mewakili sumber data kustom yang memungkinkan membaca dari dan/atau menulis ke dalamnya. Sumber data menyediakan metode untuk membuat pembaca dan penulis untuk membaca dan menulis data. Setidaknya salah satu metode reader() atau writer() harus diimplementasikan oleh subkelas apa pun untuk membuat sumber data dapat dibaca atau dapat ditulis (atau keduanya).

Setelah menerapkan antarmuka ini, Anda dapat memuat sumber data menggunakan spark.read.format(...).load() dan menyimpan data menggunakan df.write.format(...).save().

Untuk informasi selengkapnya, lihat Sumber data kustom PySpark.

Sintaksis

from pyspark.sql.datasource import DataSource

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

Parameter-parameternya

Parameter Tipe Deskripsi
options kamus Kamus yang tidak peka huruf besar/kecil yang mewakili opsi untuk sumber data ini.

Metode

Metode Deskripsi
name() Mengembalikan string yang mewakili nama format sumber data ini. Secara default, mengembalikan nama kelas. Ambil alih untuk memberikan nama pendek yang disesuaikan.
schema() Mengembalikan skema sumber data sebagai StructType string atau DDL. Jika tidak diimplementasikan dan tidak ada skema yang disediakan oleh pengguna, pengecualian akan dilemparkan.
reader(schema) Mengembalikan instans DataSourceReader untuk membaca data. Diperlukan untuk sumber data yang dapat dibaca.
writer(schema, overwrite) Mengembalikan instans DataSourceWriter untuk menulis data. Diperlukan untuk sumber data yang dapat ditulis.
streamWriter(schema, overwrite) Mengembalikan instans DataSourceStreamWriter untuk menulis data ke dalam sink streaming. Diperlukan untuk sumber data streaming yang dapat ditulis.
simpleStreamReader(schema) Mengembalikan instans SimpleDataSourceStreamReader untuk membaca data streaming. Digunakan hanya ketika streamReader() tidak diimplementasikan.
streamReader(schema) Mengembalikan instans DataSourceStreamReader untuk membaca data streaming. Lebih diprioritaskan daripada simpleStreamReader().

Examples

Tentukan dan daftarkan sumber data kustom yang dapat dibaca:

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

Tentukan sumber data dengan StructType skema:

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

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