2016-12-05 1 views
2

私はRDD [org.joda.time.DateTime]を持っています。私はスカラーの日付でレコードをソートしたいと思います。日付で並べ替えてスケーラの時間

入力 - 収集適用した後のサンプルデータ()以下 -

res41: Array[org.joda.time.DateTime] = Array(2016-10-19T05:19:07.572Z, 2016-10-12T00:31:07.572Z, 2016-10-18T19:43:07.572Z) 

予想される出力

2016-10-12T00:31:07.572Z 
2016-10-18T19:43:07.572Z 
2016-10-19T05:19:07.572Z 

私はGoogleで検索してリンク以下の確認が、それを理解できませんでしたしている -

How to define an Ordering in Scala?

助けが必要ですか?

答えて

2

をあなたのRDDのレコードを収集した場合、その後、あなたは適用することができ、次の並べ替え:

逆に
array.sortBy(_.getMillis) 

、あなたのRDDが大きいですし、ドライバーにそれを収集しない場合は、あなたが考慮する必要があります。

rdd.sortBy(_.getMillis) 
1

org.joda.time.DateTimeに暗黙の順序を定義することができます。

implicit def ord: Ordering[DateTime] = Ordering.by(_.getMillis) 

DateTimeのミリ秒を調べ、それに基づいて並べ替えます。

あなたは、どちらの暗黙のは、あなたのスコープ内にあることを確認するか、単により多くの明示的に使用することができます。

arr.sorted(ord) 
関連する問題