Skip to content
Snippets Groups Projects
Commit dbf842b7 authored by Liang-Chi Hsieh's avatar Liang-Chi Hsieh Committed by Reynold Xin
Browse files

[SPARK-18666][WEB UI] Remove the codes checking deprecated config spark.sql.unsafe.enabled

## What changes were proposed in this pull request?

`spark.sql.unsafe.enabled` is deprecated since 1.6. There still are codes in UI to check it. We should remove it and clean the codes.

## How was this patch tested?

Changes to related existing unit test.

Please review http://spark.apache.org/contributing.html before opening a pull request.

Author: Liang-Chi Hsieh <viirya@gmail.com>

Closes #16095 from viirya/remove-deprecated-config-code.
parent 88f559f2
No related branches found
No related tags found
No related merge requests found
...@@ -70,8 +70,6 @@ private[ui] class StagePage(parent: StagesTab) extends WebUIPage("stage") { ...@@ -70,8 +70,6 @@ private[ui] class StagePage(parent: StagesTab) extends WebUIPage("stage") {
// if we find that it's okay. // if we find that it's okay.
private val MAX_TIMELINE_TASKS = parent.conf.getInt("spark.ui.timeline.tasks.maximum", 1000) private val MAX_TIMELINE_TASKS = parent.conf.getInt("spark.ui.timeline.tasks.maximum", 1000)
private val displayPeakExecutionMemory = parent.conf.getBoolean("spark.sql.unsafe.enabled", true)
private def getLocalitySummaryString(stageData: StageUIData): String = { private def getLocalitySummaryString(stageData: StageUIData): String = {
val localities = stageData.taskData.values.map(_.taskInfo.taskLocality) val localities = stageData.taskData.values.map(_.taskInfo.taskLocality)
val localityCounts = localities.groupBy(identity).mapValues(_.size) val localityCounts = localities.groupBy(identity).mapValues(_.size)
...@@ -252,15 +250,13 @@ private[ui] class StagePage(parent: StagesTab) extends WebUIPage("stage") { ...@@ -252,15 +250,13 @@ private[ui] class StagePage(parent: StagesTab) extends WebUIPage("stage") {
<span class="additional-metric-title">Getting Result Time</span> <span class="additional-metric-title">Getting Result Time</span>
</span> </span>
</li> </li>
{if (displayPeakExecutionMemory) { <li>
<li> <span data-toggle="tooltip"
<span data-toggle="tooltip" title={ToolTips.PEAK_EXECUTION_MEMORY} data-placement="right">
title={ToolTips.PEAK_EXECUTION_MEMORY} data-placement="right"> <input type="checkbox" name={TaskDetailsClassNames.PEAK_EXECUTION_MEMORY}/>
<input type="checkbox" name={TaskDetailsClassNames.PEAK_EXECUTION_MEMORY}/> <span class="additional-metric-title">Peak Execution Memory</span>
<span class="additional-metric-title">Peak Execution Memory</span> </span>
</span> </li>
</li>
}}
</ul> </ul>
</div> </div>
</div> </div>
...@@ -532,13 +528,9 @@ private[ui] class StagePage(parent: StagesTab) extends WebUIPage("stage") { ...@@ -532,13 +528,9 @@ private[ui] class StagePage(parent: StagesTab) extends WebUIPage("stage") {
{serializationQuantiles} {serializationQuantiles}
</tr>, </tr>,
<tr class={TaskDetailsClassNames.GETTING_RESULT_TIME}>{gettingResultQuantiles}</tr>, <tr class={TaskDetailsClassNames.GETTING_RESULT_TIME}>{gettingResultQuantiles}</tr>,
if (displayPeakExecutionMemory) { <tr class={TaskDetailsClassNames.PEAK_EXECUTION_MEMORY}>
<tr class={TaskDetailsClassNames.PEAK_EXECUTION_MEMORY}> {peakExecutionMemoryQuantiles}
{peakExecutionMemoryQuantiles} </tr>,
</tr>
} else {
Nil
},
if (stageData.hasInput) <tr>{inputQuantiles}</tr> else Nil, if (stageData.hasInput) <tr>{inputQuantiles}</tr> else Nil,
if (stageData.hasOutput) <tr>{outputQuantiles}</tr> else Nil, if (stageData.hasOutput) <tr>{outputQuantiles}</tr> else Nil,
if (stageData.hasShuffleRead) { if (stageData.hasShuffleRead) {
...@@ -1166,9 +1158,6 @@ private[ui] class TaskPagedTable( ...@@ -1166,9 +1158,6 @@ private[ui] class TaskPagedTable(
desc: Boolean, desc: Boolean,
executorsListener: ExecutorsListener) extends PagedTable[TaskTableRowData] { executorsListener: ExecutorsListener) extends PagedTable[TaskTableRowData] {
// We only track peak memory used for unsafe operators
private val displayPeakExecutionMemory = conf.getBoolean("spark.sql.unsafe.enabled", true)
override def tableId: String = "task-table" override def tableId: String = "task-table"
override def tableCssClass: String = override def tableCssClass: String =
...@@ -1217,14 +1206,8 @@ private[ui] class TaskPagedTable( ...@@ -1217,14 +1206,8 @@ private[ui] class TaskPagedTable(
("Task Deserialization Time", TaskDetailsClassNames.TASK_DESERIALIZATION_TIME), ("Task Deserialization Time", TaskDetailsClassNames.TASK_DESERIALIZATION_TIME),
("GC Time", ""), ("GC Time", ""),
("Result Serialization Time", TaskDetailsClassNames.RESULT_SERIALIZATION_TIME), ("Result Serialization Time", TaskDetailsClassNames.RESULT_SERIALIZATION_TIME),
("Getting Result Time", TaskDetailsClassNames.GETTING_RESULT_TIME)) ++ ("Getting Result Time", TaskDetailsClassNames.GETTING_RESULT_TIME),
{ ("Peak Execution Memory", TaskDetailsClassNames.PEAK_EXECUTION_MEMORY)) ++
if (displayPeakExecutionMemory) {
Seq(("Peak Execution Memory", TaskDetailsClassNames.PEAK_EXECUTION_MEMORY))
} else {
Nil
}
} ++
{if (hasAccumulators) Seq(("Accumulators", "")) else Nil} ++ {if (hasAccumulators) Seq(("Accumulators", "")) else Nil} ++
{if (hasInput) Seq(("Input Size / Records", "")) else Nil} ++ {if (hasInput) Seq(("Input Size / Records", "")) else Nil} ++
{if (hasOutput) Seq(("Output Size / Records", "")) else Nil} ++ {if (hasOutput) Seq(("Output Size / Records", "")) else Nil} ++
...@@ -1316,11 +1299,9 @@ private[ui] class TaskPagedTable( ...@@ -1316,11 +1299,9 @@ private[ui] class TaskPagedTable(
<td class={TaskDetailsClassNames.GETTING_RESULT_TIME}> <td class={TaskDetailsClassNames.GETTING_RESULT_TIME}>
{UIUtils.formatDuration(task.gettingResultTime)} {UIUtils.formatDuration(task.gettingResultTime)}
</td> </td>
{if (displayPeakExecutionMemory) { <td class={TaskDetailsClassNames.PEAK_EXECUTION_MEMORY}>
<td class={TaskDetailsClassNames.PEAK_EXECUTION_MEMORY}> {Utils.bytesToString(task.peakExecutionMemoryUsed)}
{Utils.bytesToString(task.peakExecutionMemoryUsed)} </td>
</td>
}}
{if (task.accumulators.nonEmpty) { {if (task.accumulators.nonEmpty) {
<td>{Unparsed(task.accumulators.get)}</td> <td>{Unparsed(task.accumulators.get)}</td>
}} }}
......
...@@ -35,25 +35,15 @@ class StagePageSuite extends SparkFunSuite with LocalSparkContext { ...@@ -35,25 +35,15 @@ class StagePageSuite extends SparkFunSuite with LocalSparkContext {
private val peakExecutionMemory = 10 private val peakExecutionMemory = 10
test("peak execution memory only displayed if unsafe is enabled") { test("peak execution memory should displayed") {
val unsafeConf = "spark.sql.unsafe.enabled" val conf = new SparkConf(false)
val conf = new SparkConf(false).set(unsafeConf, "true")
val html = renderStagePage(conf).toString().toLowerCase val html = renderStagePage(conf).toString().toLowerCase
val targetString = "peak execution memory" val targetString = "peak execution memory"
assert(html.contains(targetString)) assert(html.contains(targetString))
// Disable unsafe and make sure it's not there
val conf2 = new SparkConf(false).set(unsafeConf, "false")
val html2 = renderStagePage(conf2).toString().toLowerCase
assert(!html2.contains(targetString))
// Avoid setting anything; it should be displayed by default
val conf3 = new SparkConf(false)
val html3 = renderStagePage(conf3).toString().toLowerCase
assert(html3.contains(targetString))
} }
test("SPARK-10543: peak execution memory should be per-task rather than cumulative") { test("SPARK-10543: peak execution memory should be per-task rather than cumulative") {
val unsafeConf = "spark.sql.unsafe.enabled" val conf = new SparkConf(false)
val conf = new SparkConf(false).set(unsafeConf, "true")
val html = renderStagePage(conf).toString().toLowerCase val html = renderStagePage(conf).toString().toLowerCase
// verify min/25/50/75/max show task value not cumulative values // verify min/25/50/75/max show task value not cumulative values
assert(html.contains(s"<td>$peakExecutionMemory.0 b</td>" * 5)) assert(html.contains(s"<td>$peakExecutionMemory.0 b</td>" * 5))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment