Spark 结构化流中的临时视图
Posted
技术标签:
【中文标题】Spark 结构化流中的临时视图【英文标题】:Temporary View in Spark Structure Streaming 【发布时间】:2020-07-03 05:27:08 【问题描述】:在 ForeachBatch 函数结构化 Straming 中,我想创建 Micro Batch 中接收到的数据帧的临时视图
func(tabdf, epoch_id):
tabaDf.createOrReplaceView("taba")
但我遇到以下错误:
org.apache.spark.sql.streaming.StreamingQueryException: Table or view not found: taba
Caused by: org.apache.spark.sql.catalyst.analysis.NoSuchTableException: Table or view 'taba' not found
请任何人帮助我解决此问题。
【问题讨论】:
尝试使用'createOrReplaceTempView'功能 我用过同样的,但它不起作用。未在当前 spark 会话中创建视图 【参考方案1】:流式查询使用自己的 SparkSession,它是从启动查询的 SparkSession 克隆而来。而foreachBatch
提供的DataFrame
是从流式查询的SparkSession 创建的。因此,您无法使用原始 SparkSession 访问临时视图。
一种解决方法是使用createGlobalTempView/createOrReplaceGlobalTempView
创建全局临时视图。请注意,全局临时视图与系统保留的数据库 global_temp
相关联,您需要使用限定名称来引用全局临时,例如 SELECT * FROM global_temp.view1
。
【讨论】:
以上是关于Spark 结构化流中的临时视图的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Spark 结构化流中的 Cassandra 等外部存储读取 Kafka 和查询?
有没有办法将生成的 groupby 流加入到 kafka-spark 结构化流中的原始流?