Veri Kaynağı

Veri kaynakları için temel sınıf.

Bu sınıf, bu veri kaynağından okuma ve/veya yazma olanağı sağlayan özel bir veri kaynağını temsil eder. Veri kaynağı, sırasıyla verileri okumak ve yazmak için okuyucu ve yazar oluşturma yöntemleri sağlar. Veri kaynağını okunabilir veya yazılabilir (veya her ikisini birden) yapmak için yöntemlerden reader() en az biri veya writer() herhangi bir alt sınıf tarafından uygulanması gerekir.

Bu arabirimi uyguladıktan sonra kullanarak veri kaynağınızı spark.read.format(...).load() yükleyebilir ve kullanarak df.write.format(...).save()verileri kaydedebilirsiniz.

Daha fazla bilgi için bkz. PySpark özel veri kaynakları.

Sözdizimi

from pyspark.sql.datasource import DataSource

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

Parametreler

Parametre Türü Açıklama
options Dict Bu veri kaynağı seçeneklerini temsil eden büyük/küçük harfe duyarlı olmayan bir sözlük.

Methods

Yöntem Açıklama
name() Bu veri kaynağının biçim adını temsil eden bir dize döndürür. Varsayılan olarak, sınıf adını döndürür. Özelleştirilmiş bir kısa ad sağlamak için geçersiz kılın.
schema() Veri kaynağının şemasını veya StructType DDL dizesi olarak döndürür. Uygulanmazsa ve kullanıcı tarafından hiçbir şema sağlanmazsa, bir özel durum oluşturulur.
reader(schema) Verileri okumak için bir DataSourceReader örnek döndürür. Okunabilir veri kaynakları için gereklidir.
writer(schema, overwrite) Veri yazmak için bir DataSourceWriter örnek döndürür. Yazılabilir veri kaynakları için gereklidir.
streamWriter(schema, overwrite) DataSourceStreamWriter Akış havuzuna veri yazmak için bir örnek döndürür. Yazılabilir akış veri kaynakları için gereklidir.
simpleStreamReader(schema) Akış verilerini okumak için bir SimpleDataSourceStreamReader örnek döndürür. Yalnızca uygulanmadığında streamReader() kullanılır.
streamReader(schema) Akış verilerini okumak için bir DataSourceStreamReader örnek döndürür. üzerinde öncelik simpleStreamReader()alır.

Örnekler

Özel okunabilir bir veri kaynağı tanımlayın ve kaydedin:

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

Şema ile StructType bir veri kaynağı tanımlayın:

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

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