scala - 火花结构化流将聚合数据帧连接到数据帧
问题描述
我有一个流式数据框,它可能看起来像:
+--------------------+--------------------+
| 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")
输出是每个所有者的单行和每个水果的数组。我现在想将这个清理后的数组加入到原始流数据帧中,删除 fruits col 并且只有 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]
当我把所有东西都变成一个静态数据框时,它工作得很好。这在流媒体环境中是不可能的吗?
解决方案
您是否尝试过重命名列名?有一个类似的问题https://issues.apache.org/jira/browse/SPARK-19860
推荐阅读
- python - 不规则时间间隔的平均值
- flutter - Flutter Web 在输入键上提交表单
- android - 生成的 ViewBinding 的父类是什么?
- r - 如何将每第 n (9) 列转换为 R 中的新行?
- angular - 角度重定向总是发生?
- node.js - 在多个助手中将 Node.js redis 客户端声明为 const 是一种安全的使用方式吗?
- linux - 如何以编程方式命令当前聚焦的窗口在 X11 中请求剪贴板内容?
- accessibility - 使 NSSegmentedControl 段可访问
- c++ - 如何判断 SSL_read 是否已接收并处理来自单个消息的所有记录
- php - 仅将脚本应用于一级和二级类别 WooCommerce