在DataFrame

时间:2019-05-27 20:35:01

标签: java apache-spark dataframe spark-streaming

这里是数据帧-基本上,有两种可能的类型-XY用于不同的来源ABC,{ {1}} ...

D

最终目标是收集百分比:Source | Type ------------------- A | X A | Y B | X C | Y A | X D | Y ... | ...

因此,在我们的示例中,ratio(X in A) = count(X) / (count(X) + count(Y))

非常简单,但是我无法仅使用Streaming API v2(结构化流式处理,数据框)在一键通中做到这一点? 在我看来,仅通过ratio(X in A) = 2 / (2 + 1) = 2 / 3 ~ 0.667函数是可行的...

这就是我现在拥有的-mapX类型的分散计数

Y

1 个答案:

答案 0 :(得分:1)

这应该有效:

msgDataFrame
.select("SOURCE", "TYPE")
.groupBy("SOURCE").pivot("TYPE", Seq("X", "Y")).agg(count(col("TYPE")))
.withColumn("Ratio", col("X") / (col("X") + col("Y")))
.show