如果您在本地模式下测试,即使用IDEA或Eclipse,则一种方法是执行如下操作.
System.in.read();
spark.stop(); // spark --> SparkSession
Run Code Online (Sandbox Code Playgroud)
这将确保只要您愿意就可以访问UI.只需在IDEA/Eclipse控制台上按Enter键即可终止应用程序
要添加有关如何使用历史记录服务器的新手友好的分步解决方案,请执行以下操作:
在spark分发文件夹中,尝试通过以下方式启动历史记录服务器:
./sbin/start-history-server.sh
默认情况下,历史记录服务器将尝试监视/tmp/spark-events日志,但不幸的是,如果路径不存在,它将崩溃。因此,如果您遇到错误,则可能必须mkdir /tmp/spark-events先执行。您可以查看历史服务器登录./logs以查看详细信息,以防出现故障。
为了使上下文保留其事件日志,必须启用事件日志记录。可以通过编程方式或通过编辑./conf/spark-defaults.conf(如果尚不存在,请复制模板),然后取消注释/添加以下行来完成此操作:
spark.eventLog.enabled true
运行会spark-submit导致出现事件日志文件夹,例如/tmp/spark-events/local-1465133722470。
通常从http:// localhost:18080访问历史服务器UI
您可以使用Spark的事件记录和历史记录服务器功能来查看已完成应用程序的UI; 有关详细信息,请参阅https://spark.apache.org/docs/latest/monitoring.html.
Web UI 本质上与 相关联SparkContext,因此,如果您不调用.stop并使应用程序保持活动状态,那么 UI 应保持活动状态。不过,如果您需要查看日志,那么这些日志仍应保留在服务器上。保持 Web 服务器部分打开一段时间或其他一些视图可能会是一个有趣的功能,但可能是一个功能请求?
// Initialize the Spark UI
private[spark] val ui: Option[SparkUI] =
if (conf.getBoolean("spark.ui.enabled", true)) {
Some(SparkUI.createLiveUI(this, conf, listenerBus, jobProgressListener,
env.securityManager,appName))
} else {
// For tests, do not enable the UI
None
}
/** Shut down the SparkContext. */
def stop() {
SparkContext.SPARK_CONTEXT_CONSTRUCTOR_LOCK.synchronized {
postApplicationEnd()
ui.foreach(_.stop())
...
}
}
Run Code Online (Sandbox Code Playgroud)
更新 - 更好的答案
我忘记了 Spark 历史服务器。这是你可能想要研究的事情