spark结构化流式传输将聚合数据帧连接到数据帧

时间:2018-05-29 15:09:06

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

我有一个流式数据框,可以看一些像:

+--------------------+--------------------+
|               owner|              fruits|
+--------------------+--------------------+
|Brian                | apple|
Brian                | pear |
Brian                | date|
Brian                | avocado|
Bob                | avocado|
Bob                | apple|
........
+--------------------+--------------------+

我执行了一个groupBy,agg collect_list来清理。

val myFarmDF = farmDF.withWatermark("timeStamp", "1 seconds").groupBy("fruits").agg(collect_list(col("fruits")) as "fruitsA")

每个所有者的输出是一行,每个水果的数组。 我现在想把这个清理过的数组加入到原始流数据框中,丢弃水果co​​l并且只有fruitsA列

val joinedDF = farmDF.join(myFarmDF, "owner").drop("fruits")

这似乎在我脑海中起作用,但火花似乎并不同意。

我得到了

Failure when resolving conflicting references in Join:
'Join Inner
...
+- AnalysisBarrier
      +- Aggregate [name#17], [name#17, collect_list(fruits#61, 0, 0) AS fruitA#142]

当我将所有内容都转换为静态数据帧时,它的工作正常。这在流式上下文中是不可能的吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试过重命名列名?类似的问题https://issues.apache.org/jira/browse/SPARK-19860