根据同一行的每个值在一行中添加列值

时间:2018-01-25 11:05:02

标签: scala apache-spark h2o spark-structured-streaming

我的问题可能是愚蠢的或其他任何事情。但我想知道:

  • 我想做结构化流媒体
  • 我想用Sparkling Water模型聚合和评分数据

所以我有这个

val data_processed = data_raw
      .withWatermark("timestamp", "10 minutes")
      .groupBy(window(col("timestamp"),"1 minute"))
      .agg(
       *** all aggregations ***
      )

我想添加的内容如下:

.withColumn("row_scored",scoring(all_others_cols))

因此,对于结构化流媒体中的每一行,它将在聚合后得分。但我不认为这是可能的。所以我想知道你是否想到另一种方法。

我使用苏打水,所以评分功能需要一个H2O框架。我想创建一个像这样的udf:

  • 选择所有其他列
  • 创建一行并将其转换为dataframe
  • 将由一行组成的数据帧转换为H2O Frame
  • 预测一行的H2O框架
  • 将预测从H20帧转换为数据帧
  • 将数据框中的分数加倍并使用udf
  • 返回

但我不认为这是相当优化的,也许你有一个新的方法或评论会让人看到另一种方法。

提前致谢

0 个答案:

没有答案