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

データソース

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

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

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

詳細については、 PySparkカスタム データ ソース」を参照してください。

構文​

Python
from pyspark.sql.datasource import DataSource

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

パラメーター​

パラメーター

Type

説明

options

辞書

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

パラメーター

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()よりも優先されます。

手法

説明

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")
このページの見出し