私はバイナリセンサーデータの列を持っています。Spark日付と時刻の識別
1
A
答えて
1
私はあなたの他の重複した質問を見て始めました(それは重複しているとフラグされています)ので、私はこれに答えます。
はい、partition byコマンドを使用するクエリと同様に、ウィンドウ機能を使用できます。 How to find longest sequence of consecutive dates?
同様のアプローチを使用して、データフレーム変換を使用すると、同じことを達成できます。
from pyspark.sql import Window
from pyspark.sql.functions import row_number
lst=[[1,1],[2,1],[3,1],[4,1],[5,0],[6,0],[7,0],[8,1],[9,1],[10,1]]
df=spark.createDataFrame(lst,['ID','Sensor'])
#define the window specification
w=Window.partitionBy(df['Sensor']).orderBy(df['ID'])
group_df=df.select('*',(df['ID']-row_number().over(w)).alias('grp')).orderBy('ID')
count_df=group_df.groupBy('grp').count()
#get result by joining sequence counts df back to df containing original columns
group_df\
.join(count_df,count_df['grp']==group_df['grp'])\
.select('ID','Sensor','count')\
.filter('Sensor=1')\
.orderBy('ID')\
.show()
は、所望の配列の長さが得られます。答えを
+---+------+-----+
| ID|Sensor|count|
+---+------+-----+
| 1| 1| 4|
| 2| 1| 4|
| 3| 1| 4|
| 4| 1| 4|
| 8| 1| 3|
| 9| 1| 3|
| 10| 1| 3|
+---+------+-----+
0
解決方法(ノードで収集)はRDD.mapPartitionsで実現できます。これにより、パーティション全体にマップされた関数を提供することができます。つまり、データのサブセット内の連続するサンプル全体を反復処理できます。パーティションを開始または終了するタイミングを1
で識別し、パーティション間でシーケンスを結合する必要があります。それは少し醜いかもしれないが、可能でなければならない。
まだデータがない場合は、データをsort
にする必要があります。
+0
感謝を。データを最初にソートする必要があるのはなぜですか? また、spark構造化ストリーミングを使用してこの作業を行うためのウィンドウ操作を行うことができると思いますか? –
関連する問題
- 1. 日付と日付時刻
- 2. jQueryで時刻/日付を認識
- 3. iphoneの日付と時刻
- 4. 日付と時刻のフォーマットエラー
- 5. jQueryの日付と時刻
- 6. コンソールログの日付と時刻
- 7. 日付時刻変数と日付列
- 8. 日付datePickerの日付とタイマーのユーザー日付と時刻(swift3)
- 9. 日付と時刻MySQLステートメント
- 10. カスタムデータ型 - 日付と時刻
- 11. 日付+時刻と現在の日付と時刻を比較するには?
- 12. fecha.js - 日付/時刻、特定の時刻
- 13. Tableau - 日付/時刻の差と完全な日付/時刻の計算方法
- 14. は、日付時刻
- 15. オラクル - 日付/時刻
- 16. c#時刻からsql日付時刻
- 17. 日付の日付/時刻をR
- 18. 日付と時刻とperlでの時刻を比較する
- 19. 共有時刻の日付時刻リストフィールドの表示と変換
- 20. CodeIgniter日付または日付時刻
- 21. パンテイオスログファイル名の日付/時刻
- 22. Pythonの日付時刻エラー
- 23. タイムゾーンの日付時刻
- 24. SSRSの日付時刻パラメータ
- 25. 時刻なしの日付
- 26. 日付/時刻の書式
- 27. VB.NETの日付時刻エラー
- 28. SQLサーバーの日付時刻
- 29. のMySQL - 日付/時刻
- 30. jsfの日付+時刻ピッカー
答え、あなたが共有したリンクをありがとうございました。 –