【问题标题】:Compare row entry with one or more previous rows value in apache-spark将行条目与 apache-spark 中的一个或多个先前行值进行比较
【发布时间】:2021-10-16 17:16:52
【问题描述】:

我有一个具有以下设置的数据框:

Index Value
1 a
4 b
5 c
7 g
8 g
10 g
12 c
13 g
15 c

而且我只想选择值 g 紧跟在下一行中的 g 的那些事件。我想在 Spark Structured Streaming API for JAVA 的帮助下做到这一点,但我根本无法弄清楚 SQL 语句或如何使用 API 的给定操作/转换来做到这一点。该指数正在增加,但不是以可预见的方式。我正在从 Kafka 获得流式输入。如果可能的话,我更喜欢不使用 Windows 的解决方案,以及一种简单的方法来调整“g”必须相互跟随的频率。我真的尝试过使用 LAG SQL 语句来寻找一些东西,但我失败了。

【问题讨论】:

    标签: java sql apache-spark apache-spark-sql


    【解决方案1】:

    使用lead():

    select index, value
    from (select t.*,
                 lead(value) over (order by index) as next_value
          from t
         ) t
    where next_value = 'g';
    

    【讨论】:

    • 谢谢!这已经帮助了我!好像我只是简单地扭转了滞后和领先......但你也知道我可以如何调整它,以便我可以连续检查“g”5或6次之后的“g”吗?
    • @Daevaisus 。 . .那将是一个不同的问题。您应该提出一个新的问题,而不是在评论中或不断修改现有问题。
    猜你喜欢
    • 2022-08-23
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多