メインコンテンツまでスキップ

データソース

データソースの基本クラス。

このクラスは、読み取りや書き込みが可能なカスタム データ ソースを表します。 データソースは、それぞれデータの読み取りと書き込みを行うリーダーとライターを作成するメソッドを提供します。 データソースを読み取り可能または書き込み可能(あるいはその両方)にするには、サブクラスでメソッドreader()またはwriter()の少なくとも 1 つを実装する必要があります。

このインターフェースを実装すると、 spark.read.format(...).load()を使用してデータソースを読み込み、 df.write.format(...).save()を使用してデータを保存できるようになります。

構文

Python
from pyspark.sql.datasource import DataSource

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

パラメーター

パラメーター

Type

説明

options

辞書

このデータ ソースのオプションを表す、大文字と小文字を区別しない辞書。

方法

手法

説明

name()

このデータ ソースの形式名を表す文字列を返します。 デフォルトでは、クラス名を返します。オーバーライドしてカスタマイズされた短い名前を提供します。

schema()

データソースのスキーマをStructTypeまたは DDL 文字列として返します。 実装されておらず、ユーザーによってスキーマが提供されていない場合は、例外がスローされます。

reader(schema)

データを読み取るためのDataSourceReaderインスタンスを返します。読み取り可能なデータ ソースに必要です。

writer(schema, overwrite)

データを書き込むためのDataSourceWriterインスタンスを返します。書き込み可能なデータ ソースに必要です。

streamWriter(schema, overwrite)

ストリーミング シンクにデータを書き込むためのDataSourceStreamWriterインスタンスを返します。書き込み可能なストリーミング データ ソースに必要です。

simpleStreamReader(schema)

ストリーミング データを読み取るためのSimpleDataSourceStreamReaderインスタンスを返します。streamReader()が実装されていない場合にのみ使用されます。

streamReader(schema)

ストリーミング データを読み取るためのDataSourceStreamReaderインスタンスを返します。simpleStreamReader()よりも優先されます。

カスタム読み取り可能なデータ ソースを定義して登録します。

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

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