2016-04-05 8 views
4

データフレームを列にグループ化しようとすると、各グループの最小値を見つけようとすると、数値以外の列には表示されません。groupbyDatafram.min('timestampCol')次に、groupbyの最小(最も早い)日付を適切にフィルタリングできますか?Spark groupByデータフレームでタイムスタンプの最小値を求める

私はpostgresql S3インスタンスからデータフレームをストリーミングしているので、データは既に設定されています。

答えて

7

だけではなく、minヘルパーを使用しての直接集約を実行します。それはどんなOrderableタイプで動作します

import org.apache.spark.sql.functions.min 

val sqlContext: SQLContext = ??? 

import sqlContext.implicits._ 

val df = Seq((1L, "2016-04-05 15:10:00"), (1L, "2014-01-01 15:10:00")) 
    .toDF("id", "ts") 
    .withColumn("ts", $"ts".cast("timestamp")) 

df.groupBy($"id").agg(min($"ts")).show 

// +---+--------------------+ 
// | id|    min(ts)| 
// +---+--------------------+ 
// | 1|2014-01-01 15:10:...| 
// +---+--------------------+ 

minとは異なり。

+1

ありがとうございますが、エラーが表示されます。 –

+2

試してみてください: 'import org.apache.spark.sql.functions._' –

+0

本当にすごく残念ですがこれは別の質問ですが、org.apache.spark.sql.DataFrame = [MIN(ts):timestamp]私はそれが単一の列をDataFrameとして返すだけではなく、groupByオブジェクトにcol MIN(ts)を追加すると考えていました。何とかオリジナルのgroupByオブジェクトにこれを参加させる必要がありますか? –

関連する問題