如何缓存Spark Streaming Dataset <行>

时间:2018-11-27 10:44:23

标签: apache-spark spark-streaming spark-submit

我有一个火花流Dataset<Row>,它可以流csv文件的目录。 所以我有这些问题:

  1. 如何缓存流数据集。
  2. 如何在YARN中提交我的Spark流媒体作业,因此,我的流媒体作业应永久运行,直到用户手动中断为止。

1 个答案:

答案 0 :(得分:0)

您可以使用缓存或持久性功能来缓存流数据,如下所示

 dstream.persist()

仅当您多次使用流时才执行此操作。对于reducebywindowreducebyKeyandWindow操作,这是自动完成的。

在流作业中,要使作业保持运行状态,您需要启动Spark流上下文并启动该上下文

val ssc = new StreamingContext(sc, Seconds(1))
// your logic goes here
ssc.start()

如果您的工作在运行数小时后被杀死(并且集群已被内核化),请检查kerberos票证是否即将到期。这可能会导致长时间运行的作业失败。

编辑: 注意:如果您专门谈论结构化流。不支持在流数据集上进行缓存。请查看此帖子Why does using cache on streaming Datasets fail with "AnalysisException: Queries with streaming sources must be executed with writeStream.start()"?