5

Spark 1.6では、StreamingContext関数を使用できましたreduceByKeyAndWindow

        events
            .mapToPair(x-> new Tuple2<String,MyPojo>(x.getID(),x))
            .reduceByKeyAndWindow((a, b) -> 
                     a.getQuality() > b.getQuality() ? a : b
                , Durations.seconds(properties.getWindowLenght()), 
                  Durations.seconds(properties.getSlidingWindow()))
            .map(y->y._2);

現在、spark 2.0.2 と Dataframes でこのロジックを再現しようとしています。欠落している関数 reduceByKey を再現できましたが、ウィンドウはありません

        events
            .groupByKey(x-> x.getID() ,Encoders.STRING())
            .reduceGroups((a,b)-> a.getQuality()>=b.getQuality() ? a : b)
            .map(x->x._2, Encoders.bean(MyPojo.class))

でウィンドウを実装できましたgroupBy

        events
            .groupBy(functions.window(col("timeStamp"), "10 minutes", "5 minutes"),col("id"))
            .max("quality")
            .join(events, "id");

groupByを使用したとき、15列のうち2列しか取得できなかったので、結合してそれらを取得しようとしましたが、例外が発生しました:join between two streaming DataFrames/Datasets is not supported;

reduceByKeyAndWindowspark 2のロジックを再現する方法はありますか?

4

0 に答える 0