clusterBy (DataStreamWriter)
指定された列ごとに出力をクラスタリングします。 クラスタリング列の値が類似しているレコードは、同じファイルにグループ化されます。クラスタリングは、クラスタリング列に述語を使用したクエリで不要なデータをスキップできるようにすることで、クエリの効率を向上させます。 パーティショニングとは異なり、クラスタリングはカーディナリティの高い列にも適用できます。
構文
clusterBy(*cols)
パラメーター
パラメーター | Type | 説明 |
|---|---|---|
| 文字列またはリスト | クラスター化する列の名前。 |
戻り値
DataStreamWriter
例
Python
df = spark.readStream.format("rate").load()
df.writeStream.clusterBy("value")
# <...streaming.readwriter.DataStreamWriter object ...>
タイムスタンプによってソース ストリームをクラスター化し、 Parquetに書き込みます。
Python
import tempfile
import time
with tempfile.TemporaryDirectory(prefix="clusterBy1") as d:
with tempfile.TemporaryDirectory(prefix="clusterBy2") as cp:
df = spark.readStream.format("rate").option("rowsPerSecond", 10).load()
q = df.writeStream.clusterBy(
"timestamp").format("parquet").option("checkpointLocation", cp).start(d)
time.sleep(5)
q.stop()
spark.read.schema(df.schema).parquet(d).show()