在结构流和状态流中定期刷新静态数据

时间:2020-03-13 21:42:49

标签: apache-spark hbase spark-streaming spark-structured-streaming stateful

我正在尝试使用Spark结构化流实施5分钟批量监视,该过程从kafka读取并查找(1个巨大且1个较小的)diff静态数据集作为ETL逻辑的一部分,并调用rest API将最终结果发送到外部应用程序(从kafka获得的数十亿条记录中,只有不到100条记录会在ETL之后退出API)。

  1. 如何在不重新启动整个流应用程序的情况下实现刷新静态查找? (使用StreamingQueryManager.addListener方法的StreamingQueryListener具有通过StreamingQuery.AwaitTermination刷新/重新创建静态df的逻辑,或使用persist和unpersis cache或任何其他更好的主意?) 注意:浏览了下面的文章,但不确定hbase是否是更好的选择,因为它是旧的。 https://medium.com/@anchitsharma1994/hbase-lookup-in-spark-streaming-acafe28cb0dc

  2. 一旦一条记录丰富了查找信息并应用了一些规则/条件,我们需要开始跟踪它以发送更新,直到它根据其余逻辑按照自定义逻辑完成了事件的生命周期。因此,希望flatmapwithGroupState实现有助于在此处跟踪事件状态。请在此处建议最佳选择。

  3. 在HDFS和HBase中管理组状态。请从生产环境中的运营和监控角度提出最佳选择,其中支持团队对Spark的了解最少。如果我们使用HDFS进行状态维护,那么在Rest API无法将更新发送给最终用户/系统的情况下如何保持事件状态跟踪呢?

0 个答案:

没有答案
相关问题