Spark streaming 获取预计算的特征

Spark streaming get pre computed features

我正在尝试使用 spark streaming 来处理一些 order 流,我有一些先前计算的特征可能是流中 orderbuyer_id

我需要在 Spark Streaming 运行 时获得这些功能。

现在,我将 buyer_id 特征存储在配置单元 table 中并将其加载到 RDD

val buyerfeatures = loadBuyerFeatures() orderstream.transform(rdd => rdd.leftOuterJoin(buyerfeatures)) 获取预先计算的功能。

另一种处理方法可能是将特征保存到 hbase table 中。并在每个 buyer_id.

开火

哪个更好?或者我可以用另一种方式解决这个问题。

根据我的短暂经验:
加载计算所需的数据应该在启动流上下文之前完成:

  • 如果您在 DStream 操作中加载,该操作将在每个 Batch Inteverval 时间重复。
  • 如果每次都从Hive加载,应该认真考虑开销成本和数据传输过程中可能出现的问题。

因此,如果您的数据已经计算完毕并且 "small" 足够,请在程序开始时将其加载到广播变量中,或者更好的是,加载到最终变量中。要么这样,要么在 DStream 之前创建一个 RDD 并将其保留为参考(这看起来像你现在正在做的),尽管记得缓存它(总是如果你有足够的 space).

如果您确实需要在流传输时读取它(也许您从流中收到查询密钥),请尝试在 foreachPartition 中执行一次并将其保存在局部变量中。