(指定された時間差に応じて、データパケットのアレイ内の)ロジックを実装するコードを覚え

ビジネスシーン

以下のデータがあります。

  IDのインタイムのOUTTimeは
1190771865,2019-11-26 13:27:26,2019-11-26夜01時27分26秒 1190771865,2019-11-26 13:27:26,2019-11-26夜01時27分26秒 1190771865,2019-11-26 16:42:46,2019-11-26夜04時42分46秒 1190771865,2019-11-26 13:27:26,2019-11-26夜01時27分26秒 1190771865,2019-11-26 16:42:46,2019-11-26夜04時42分46秒 1190771865,2019-11-26 17:23:11,2019-11-26夜05時23分11秒 1190771865,2019-11-26 13:27:26,2019-11-26夜01時27分26秒 1190771865,2019-11-26 16:42:46,2019-11-26夜04時42分46秒 1190771865,2019-11-26 17:23:11,2019-11-26夜05時23分11秒 1190771865,2019-11-26 13:27:26,2019-11-26夜01時27分26秒 1190771865,2019-11-26 16:42:46,2019-11-26夜04時42分46秒 1190771865,2019-11-26 17:23:11,2019-11-26夜05時23分11秒 1190771865,2019-11-26 13:27:26,2019-11-26夜01時27分26秒 1190771865,2019-11-26 16:42:46,2019-11-26夜04時42分46秒 1190771865,2019-11-26 17:23:11,2019-11-26夜05時23分11秒 1190771865,2019-11-26 13:27:26,2019-11-26夜01時27分26秒 1190771865,2019-11-26 16:42:46,2019-11-26夜04時42分46秒 1190771865,2019-11-26 17:23:11,2019-11-26夜05時23分11秒 1190771865,2019-11-26 13:27:26,2019-11-26夜01時27分26秒 1190771865,2019-11-26 16:42:46,2019-11-26夜04時42分46秒 1190771865,2019-11-26 17:23:11,2019-11-26夜05時23分11秒 1190771865,2019-11-26 13:27:26,2019-11-26夜01時27分26秒 1190771865,2019-11-26 16:42:46,2019-11-26夜04時42分46秒 1190771865,2019-11-26 17:23:11,2019-11-26夜05時23分11秒 1190771865,2019-11-26 13:27:26,2019-11-26夜01時27分26秒 1190771865,2019-11-26 16:42:46,2019-11-26夜04時42分46秒 1190771865,2019-11-26 17:23:11,2019-11-26夜05時23分11秒 1190771865,2019-11-26 13:27:26,2019-11-26夜01時27分26秒 1190771865,2019-11-26 16:42:46,2019-11-26夜04時42分46秒 1190771865,2019-11-26 17:23:11,2019-11-26夜05時23分11秒 1190771865,2019-11-26 13:27:26,2019-11-26夜01時27分26秒 1190771865,2019-11-26 16:42:46,2019-11-26夜04時42分46秒 1190771865,2019-11-26 17:23:11,2019-11-26夜05時23分11秒 1190771865,2019-11-26 13:27:26,2019-11-26夜01時27分26秒 1190771865,2019-11-26 16:42:46,2019-11-26夜04時42分46秒 1190771865,2019-11-26 17:23:11,2019-11-26夜05時23分11秒 1190771865,2019-11-26 13:27:26,2019-11-26夜01時27分26秒 1190771865,2019-11-26 16:42:46,2019-11-26夜04時42分46秒 1190771865,2019-11-26 17:23:11,2019-11-26夜05時23分11秒 1190771865,2019-11-26 13:27:26,2019-11-26夜01時27分26秒 1190771865,2019-11-26 16:42:46,2019-11-26夜04時42分46秒 1190771865,2019-11-26 17:23:11,2019-11-26夜05時23分11秒 1190771865,2019-11-26 13:27:26,2019-11-26夜01時27分26秒 1190771865,2019-11-26 16:42:46,2019-11-26夜04時42分46秒 1190771865,2019-11-26 17:23:11,2019-11-26夜05時23分11秒 1190771865,2019-11-26 13:27:26,2019-11-26夜01時27分26秒 1190771865,2019-11-26 16:42:46,2019-11-26夜04時42分46秒 1190771865,2019-11-26 17:23:11,2019-11-26夜05時23分11秒 1190771865,2019-11-26 13:27:26,2019-11-26夜01時27分26秒

 

要件:

  上記のデータのために、再編成のルールを再構築:

    インタイムの昇順にデータ上に、データが以前のデータインタイムと比較されます

    図1に示すように、第1及び第2のデータとの差が120分よりも大きい場合、直接最初のデータを破棄

    図2に示すように、データの前のデータとの差が1未満120は、データインタイム、OUTTimeはインタイムのようなこれらのいずれかの上に保持されている、次のトラバーサルに進み、トラバースは、最後のデータを知っています

    3、新しいデータがルールの上方サイクルに続けて差分値データとデータは、次に、予め120分を超える、データである場合

コードの実装:

1は、以上の処理データがアレイになるため、すなわち(AAA、アレイ(ID、インタイム 、OUTTimeは)) 
注:各データのタイムアウトの前には、タイムスタンプに変換された
mergedDataTmp.map(X =>(X ._1、.distinct.filter(X => x._2 <= x._2))) .mapPartitions(プロセス=> { iter.map(X => { VARカウント= 0 だっiterNum = 0 ヴァルTLIST =新しいListBuffer [(文字列(文字列、文字列、文字列))]() ヴァルVS = x._2.sortWith((A、B)=> a._2 <b._2).toIterator ヴァルvsList = vs.toList ヴァルvsLength = vsList.length VAR tmpV = "" 用(T < - vsList){ オーバー+ 1 = {(== 0をカウントする)場合 TLIST + =((x._1、T)) カウント+ = 1 } そうしないと { ヴァルcompareTime = IF(!tList.isEmpty){ (DateUtil.dateToTimeStamp(t._2) - DateUtil.dateToTimeStamp(tList.last._2._2))/ 1000> = 120 * 60 } そうしないと { } IF(compareTime &&カウント== 1){ //(給餌後の時間の記録の場合) - (前のレコードタイムへ)> = 120分 tList.remove(tList.length - 1) TLIST + =((x._1、T)) }そうであれば(compareTime &&カウント> 1){ //(給餌後の時間の記録の場合) - (前のレコードタイムへ)> = 120分 ヴァルlastRecord = tList.last TLIST(tList.length - 1)=(x._1、(t._1、lastRecord._2._2、tmpV、t._3)) TLIST + =((x._1、T)) カウント数= 1 } そうしないと { //の摂取後の記録時間の場合 - <120分前の記録時間を供給 カウント+ = 1 IF(iterNum == vsLength){ ヴァルlastRecord = tList.last TLIST(tList.length - 1)=(x._1、(t._1、lastRecord._2._2、t._3)) } tmpV = t._2 } } } TLIST }) })。flatMap(X => X)

  

おすすめ

転載: www.cnblogs.com/Gxiaobai/p/12076583.html