【问题标题】:Workaround for joining two streams in structured streaming in Spark 2.x在 Spark 2.x 中加入结构化流中的两个流的解决方法
【发布时间】:2017-09-25 19:35:08
【问题描述】:

我有一个配置流(不经常更改,但如果有更新,它将是一条消息),以及另一个原始数据点流。

据我了解,目前 spark 不支持加入流式数据集或数据帧。有没有解决这个问题的好方法?

是否可以将其中一个流数据集“快照”到静态数据集(可能是配置数据集,因为它的更新较少),然后加入另一个流数据集?

欢迎提出建议!

【问题讨论】:

    标签: apache-spark spark-structured-streaming


    【解决方案1】:

    “解决方法”是使用当前的主分支;)

    还没有发布,但是当前的master分支已经有stream-stream inner join,并且正在进行outer join。请参阅this Jira 票证以供参考,在子任务中您可以看到可能要使用的联接。

    没有其他简单的解决方法。流连接需要保存流的状态,然后正确更新状态。可以在pull request中看到代码,实现stream-stream join是相当复杂的。

    【讨论】:

    • 它是 3.0 而不是 2.3 :)
    • 嗯,Target Version 是 2.3,但 Fix Version 是 3.0 - 它已经在 master 中,你认为它不会包含在 2.3 中吗?
    • 这听起来像是一个严重的变化。可能是刻意的选择。但我不是内部人士,所以我不能肯定。
    • @zero323 好的,我写信给如来达斯 :) 也许他知道 - twitter.com/GawedaTomasz/status/912423624044421122
    • 如何从数据框或数据集之一创建临时视图?然后进行连接。根据“权威指南”,“实际上,视图相当于从现有 DataFrame 创建新 DataFrame。”
    【解决方案2】:

    这就是我最后要做的事情。

    将更新较少的流放入内存接收器。然后从该表中进行选择。此时,它是一个静态实例,可以与其他流连接。不需要触发器。当然,你需要自己正确更新表格。

    这不是很健壮,但这是我在官方支持之前能想到的最好的一个。

    【讨论】:

    • 您有可以分享的代码 sn-p 以更好地理解这一点吗?谢谢!
    猜你喜欢
    • 2020-12-15
    • 2019-11-12
    • 2017-09-16
    • 2018-09-14
    • 1970-01-01
    • 2017-05-04
    • 2019-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多