簡體   English   中英

無法使用 Spark Structured Streaming 覆蓋“spark.sql.shuffle.partitions”的默認值

[英]Unable to overwrite default value of "spark.sql.shuffle.partitions" with Spark Structured Streaming

我想直接在代碼中覆蓋spark.sql.shuffle.partitions參數:

val sparkSession = SparkSession
  .builder()
  .appName("SPARK")
  .getOrCreate()

sparkSession.conf.set("spark.sql.shuffle.partitions", 2)

但是此設置沒有生效,因為在日志中我收到以下警告消息:

WARN  OffsetSeqMetadata:66 - Updating the value of conf 'spark.sql.shuffle.partitions' in current session from '2' to '200'.

雖然在spark-submit shell 中傳遞的相同參數有效:

#!/bin/bash

/app/spark-2/bin/spark-submit \
--queue root.dev \
--master yarn \
--deploy-mode cluster \
--driver-memory 5G \
--executor-memory 4G \
--executor-cores 2 \
--num-executors 4 \
--conf spark.app.name=SPARK \
--conf spark.executor.memoryOverhead=2048 \
--conf spark.yarn.maxAppAttempts=1 \
--conf spark.sql.shuffle.partitions=2 \
--class com.dev.MainClass

有任何想法嗎?

在 Spark 結構化流作業的檢查點文件中,存儲了一些sparkSession配置。

例如,在“offset”文件夾中,最新批次的內容可能如下所示:

v1
{"batchWatermarkMs":0,"batchTimestampMs":1619782960476,"conf":{"spark.sql.streaming.stateStore.providerClass":"org.apache.spark.sql.execution.streaming.state.HDFSBackedStateStoreProvider","spark.sql.streaming.join.stateFormatVersion":"2","spark.sql.streaming.stateStore.compression.codec":"lz4","spark.sql.streaming.flatMapGroupsWithState.stateFormatVersion":"2","spark.sql.streaming.multipleWatermarkPolicy":"min","spark.sql.streaming.aggregation.stateFormatVersion":"2","spark.sql.shuffle.partitions":"200"}}
4

其中,它存儲配置spark.sql.shuffle.partitions的值,在我的示例中設置為默認值 200。

在您將看到的代碼中,如果該配置值在檢查點文件的元數據中可用,則會被替換。

如果您確實必須更改分區,請刪除所有檢查點文件或將最后一個檢查點文件中的值手動更改為 2。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM