spark StreamingQueryStatusStore 源码

  • 2022-10-20
  • 浏览 (238)

spark StreamingQueryStatusStore 代码

文件路径:/sql/core/src/main/scala/org/apache/spark/sql/execution/ui/StreamingQueryStatusStore.scala

/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.spark.sql.execution.ui

import java.util.UUID

import org.apache.spark.sql.streaming.ui.{StreamingQueryData, StreamingQueryProgressWrapper, StreamingQueryUIData}
import org.apache.spark.status.KVUtils
import org.apache.spark.util.kvstore.KVStore

/**
 * Provides a view of a KVStore with methods that make it easy to query Streaming Query state.
 * There's no state kept in this class, so it's ok to have multiple instances of it in an
 * application.
 */
class StreamingQueryStatusStore(store: KVStore) {

  def allQueryUIData: Seq[StreamingQueryUIData] = {
    val view = store.view(classOf[StreamingQueryData]).index("startTimestamp").first(0L)
    KVUtils.viewToSeq(view).map(makeUIData)
  }

  // visible for test
  private[sql] def getQueryProgressData(runId: UUID): Seq[StreamingQueryProgressWrapper] = {
    val view = store.view(classOf[StreamingQueryProgressWrapper])
      .index("runId").first(runId.toString).last(runId.toString)
    KVUtils.viewToSeq(view)
  }

  private def makeUIData(summary: StreamingQueryData): StreamingQueryUIData = {
    val runId = summary.runId
    val view = store.view(classOf[StreamingQueryProgressWrapper])
      .index("runId").first(runId).last(runId)
    val recentProgress = KVUtils.viewToSeq(view)
      .map(_.progress).sortBy(_.timestamp).toArray
    StreamingQueryUIData(summary, recentProgress)
  }
}

相关信息

spark 源码目录

相关文章

spark AllExecutionsPage 源码

spark ExecutionPage 源码

spark SQLAppStatusListener 源码

spark SQLAppStatusStore 源码

spark SQLHistoryServerPlugin 源码

spark SQLListener 源码

spark SQLTab 源码

spark SparkPlanGraph 源码

spark StreamingQueryHistoryServerPlugin 源码

0  赞