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