apache-spark - 如何缓存火花流数据集|
问题描述
我有一个火花流Dataset<Row>
,它流式传输 csv 文件的目录。所以我有这些问题:
- 如何缓存流数据集。
- 如何在 YARN 中提交我的 spark 流式传输作业,我的流式传输作业应该永远运行,直到用户手动中断。
解决方案
您可以使用缓存或持久功能缓存您的流数据,如下所示
dstream.persist()
仅当您多次使用流时才这样做。对于reducebywindow
和reducebyKeyandWindow
操作,这是自动完成的。
在您的流式传输作业中以保持您的作业运行,您需要启动火花流式传输上下文并启动此上下文
val ssc = new StreamingContext(sc, Seconds(1))
// your logic goes here
ssc.start()
如果您的作业在运行几个小时后被终止(并且您的集群已被 kerborized),请检查 kerberos 票证是否到期。这可能会导致长时间运行的作业失败。
编辑:注意:如果您专门谈论结构化流。不支持流式数据集上的缓存..查看这篇文章为什么在流式数据集上使用缓存失败并出现“AnalysisException:必须使用 writeStream.start() 执行带有流式源的查询”?
推荐阅读
- python - 在 Pandas 中使用 Apply 方法的 Groupby:分组值的百分比和
- database -
在 DBMS 中恢复 - webpack - 为什么我应该在入口 webpack 配置中声明 scss 文件
- laravel - 如何在laravel中显示数据库中的名称
- css - sass 编译器不工作?仍然在 width 属性中看到 calc 函数
- spring - Springboot JdbcTemplate Autowired 失败
- python - Python:从 RestAPI 下载 zip 文件
- mips - MIPS双点
- docker - 在archlinux的docker中强制更改密码但失败
- java - 运行程序并观察输出为:55 4 50 19