clusterBy(DataStreamWriter)

지정된 열을 통해 출력을 클러스터합니다. 클러스터링 열에 비슷한 값이 있는 레코드는 동일한 파일에서 함께 그룹화됩니다. 클러스터링을 사용하면 클러스터링 열에 조건자가 있는 쿼리가 불필요한 데이터를 건너뛸 수 있도록 하여 쿼리 효율성을 향상시킵니다. 분할과 달리 높은 카디널리티 열에서 클러스터링을 사용할 수 있습니다.

문법

clusterBy(*cols)

매개 변수

매개 변수 유형 설명
*cols str 또는 list 클러스터할 열의 이름입니다.

Returns

DataStreamWriter

예제

df = spark.readStream.format("rate").load()
df.writeStream.clusterBy("value")
# <...streaming.readwriter.DataStreamWriter object ...>

타임스탬프별로 속도 원본 스트림을 클러스터하고 Parquet에 씁니다.

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