我正在构建一个spark结构化的流媒体工作,它可以实现以下功能,
流媒体源,
val small_df = spark.readStream
.format("kafka")
.load()
small_df.createOrReplaceTempView("small_df")
Dataframe-Phoenix负载
val phoenixDF = spark.read.format("org.apache.phoenix.spark")
.option("table", "my_table")
.option("zkUrl", "zk")
.load()
phoenixDF.createOrReplaceTempView("phoenix_tbl")
然后,sparksql语句(在主键上)与另一个小Dataframe连接以过滤记录。
val filteredDF = spark.sql("select phoenix_data.* from small_df join phoenix_tbl on small_df.id = phoenix_tbl.id)
观察:
spark做全表扫描和范围扫描 joins
以及 filter
分别地
自 small_df
是我无法使用的流式数据集 filter
依靠 join
从phoenix表中筛选记录,但最终以全表扫描结束,这是不可行的。
有关要求的更多详细信息
在这种情况下,如何执行范围扫描?
我做的和这里讨论的一样,但唯一的区别是我的 small_df
是流式数据集。
暂无答案!
目前还没有任何答案,快来回答吧!