2016-04-05 12 views
4

Veri çerçevemi bir sütun üzerinde gruplandırmaya çalıştığımda, her bir gruplandırma için en az groupbyDatafram.min('timestampCol') gruplamayı bulmaya çalıştığımda, bunu sayısal olmayan sütunlarda yapamıyorum. O zaman gruptaki asgari (en erken) tarihi nasıl doğru şekilde filtreleyebilirim?Spark groupBy veri çerçevesi aracılığıyla bir zaman damgası için minimum bulma

Veritabanını bir postgresql S3 örneğinden akışa veriyorum, böylece veriler zaten yapılandırıldı.

cevap

7

Hemen yerine min yardımcı kullanarak doğrudan toplanmasına gerçekleştirin: herhangi Orderable türüne çalışacak

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 aksine.

+1

Teşekkürler, ama hata alıyorum: bulunamadı: min. –

+2

Şunları deneyin: 'import org.apache.spark.sql.functions._' –

+0

Teşekkürler, çok hızlı bir şekilde üzgünüm bu farklı bir soru ama org.apache.spark.sql.DataFrame = [MIN (ts): timestamp] olsun Tek bir sütunu bir DataFrame olarak döndürmemek için groupMy nesnesine col MIN (ts) eklemenin farzedildiğini düşündüm. Orijinal groupBy nesnesine bu şekilde katılmam gerekir mi? –

İlgili konular