首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在非实时地使用sql在蜂窝表上进行星火流?

如何在非实时地使用sql在蜂窝表上进行星火流?
EN

Stack Overflow用户
提问于 2020-07-12 13:24:37
回答 1查看 845关注 0票数 0

我们有一些数据(数百万)在蜂箱表中,每天都有。第二天,一旦熬夜摄入完成,不同的应用程序就会查询我们的数据(使用sql)。

我们使用这个sql并调用spark。

代码语言:javascript
复制
spark.sqlContext.sql(statement)  // hive-metastore integration is enabled

这导致火花驱动程序占用过多内存,我们是否可以使用火花流(或结构化流)以管道方式,而不是收集驱动程序上的所有内容,然后发送给客户端?

我们不想(在典型的流应用程序中)立即发送数据,而是希望在客户要求(拉)数据时向客户发送数据。

EN

回答 1

Stack Overflow用户

发布于 2020-07-12 14:24:21

IIUC。

  • 火花流主要用于处理流数据,将其转换为毫秒到秒的批处理。
  • 您可以查看streamingDF.writeStream.foreachBatch { (batchDF: DataFrame, batchId: Long),为Spark提供了一个非常好的功能,可以以微批处理方式编写流处理输出Sink。
  • 尽管如此,Spark结构化流并没有标准的JDBC源代码可供读取。
  • 设计一个选项,以压缩和结构化的方式直接存储Hive底层文件,如果每个客户端需要相同/类似的数据,则直接传输它们,而不是通过spark.sql进行选择,或者根据spark.sql查询和传输所需文件的位置情况对它们进行分区。

资料来源:

结构化流查询是使用微批处理引擎处理的,该引擎将数据流作为一系列小批处理作业处理,从而实现端到端延迟低至100毫秒,且只需一次容错保证。

ForeachBatch

foreachBatch(.)允许您指定对流查询的每个微批处理的输出数据执行的函数。从Spark2.4开始,Scala、Java和Python都支持这一点。它包含两个参数: DataFrame或Dataset,它具有微批处理的输出数据和微批处理的唯一ID。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62861662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档