Apache spark 如何在配置单元表上使用sql进行非实时spark流式处理?

Apache spark 如何在配置单元表上使用sql进行非实时spark流式处理?,apache-spark,hive,spark-streaming,spark-structured-streaming,Apache Spark,Hive,Spark Streaming,Spark Structured Streaming,我们在蜂巢表中有一些数据(数百万),每天都有。第二天,一旦夜间摄取完成,不同的应用程序向我们查询数据(使用sql) 我们使用这个sql并调用spark spark.sqlContext.sql(statement) // hive-metastore integration is enabled 这导致spark驱动程序内存使用过多,我们是否可以使用spark流(或结构化流)以管道方式流式传输结果,而不是收集驱动程序上的所有内容,然后发送到客户端 我们不希望数据一出现就发送出去(在典型的流式

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

我们使用这个sql并调用spark

spark.sqlContext.sql(statement)  // hive-metastore integration is enabled
这导致spark驱动程序内存使用过多,我们是否可以使用spark流(或结构化流)以管道方式流式传输结果,而不是收集驱动程序上的所有内容,然后发送到客户端

我们不希望数据一出现就发送出去(在典型的流式应用程序中),但希望在客户请求(拉取)数据时向客户发送流式数据。

IIUC

  • Spark Streaming主要设计用于通过将流数据转换为毫秒到秒的批次来处理流数据

  • 您可以查看streamingDF.writeStream.foreachBatch{(batchDF:DataFrame,batchId:Long)为Spark提供了非常好的编写功能 以微批量方式流式处理输出接收器

  • 然而,Spark结构化流媒体并没有一个标准的JDBC源定义来读取

  • 制定一个选项,以压缩和结构化的方式直接存储配置单元基础文件,如果每个客户端都需要相同/相似的数据,则直接传输它们,而不是通过spark.sql进行选择,或者根据spark.sql查询的where条件对它们进行分区,并进一步传输所需的文件

来源:

查询使用微批处理引擎进行处理,该引擎将数据流作为一系列小批处理作业进行处理,从而实现低至100毫秒的端到端延迟和一次容错保证

:


foreachBatch(…)允许您指定在流式查询的每个微批次的输出数据上执行的函数。自Spark 2.4以来,Scala、Java和Python都支持此功能。它需要两个参数:一个数据帧或数据集,其中包含微批次的输出数据和微批次的唯一ID。

什么是
IIUC
意思?如果我取消正确倒立