按照Structured Streaming Programming Guide
queryName("myTableName")
用于在输出接收器为format("memory")
时定义内存中的表名
aggDF
.writeStream
.queryName("aggregates") // this query name will be the table name
.outputMode("complete")
.format("memory")
.start()
spark.sql("select * from aggregates").show() // interactively query in-memory table
DataStreamWriterscala文档queryName()
的火花源代码为:
指定可以用
start()
开头的[[StreamingQuery]]的名称。 在关联的SQLContext中,该名称在所有当前活动的查询中必须是唯一的。
问题:queryName()
设置还有其他可能的用法吗? Spark作业日志?查询progress monitoring中的详细信息?
答案 0 :(得分:2)
添加到@mike 的回答中,我想提一下,在 Databricks(其核心使用 Spark)中,您可以将定义的查询名称与函数 untilStreamIsReady()
结合使用。
例如,如果您定义了流式查询 StackoverflowTest
,那么您可以执行函数 untilStreamIsReady('StackoverflowTest')
以等待查询准备就绪并开始(抱歉我是 Obvious 的上尉)。
我必须说我在官方文档中找不到这个函数的直接参考,但在以下链接中找到了:
答案 1 :(得分:1)
我遇到了 queryName
的以下三种用法:
正如 OP 所提到的并记录在结构化流指南中,当输出接收器的格式为“内存”时,它用于定义内存中的表名称。
queryName 定义了 event.progress.name
的值,其中事件是 QueryProgressEvent
中的 StreamingQueryListener
。
它也用在 Spark Web UI 的描述列中(参见我设置 queryName("StackoverflowTest")
的屏幕截图:
答案 2 :(得分:0)
不,它只是用于使用内存outputMode进行调试。