这里是数据帧-基本上,有两种可能的类型-X
和Y
用于不同的来源A
,B
,C
,{ {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
函数是可行的...
这就是我现在拥有的-map
和X
类型的分散计数
Y
答案 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