2015-12-22 171 views
3

我有以下形式的CSV:spark scala dataframe時間戳轉換排序?

t,value 
2012-01-12 12:30:00,4 
2012-01-12 12:45:00,3 
2012-01-12 12:00:00,12 
2012-01-12 12:15:00,13 
2012-01-12 13:00:00,7 

我使用spark-csv轉換成該數據幀。 (所以tString類型,而value是整數類型)。什麼是適當的火花Scala方式,以便輸出按時間排序?

我正在考慮將t轉換爲可以允許數據幀sortBy的某種類型。但我不熟悉哪種時間戳類型允許按時間排序數據幀。

回答

7

鑑於你可以轉換爲timestamp的格式

import org.apache.spark.sql.types.TimestampType 

df.select($"t".cast(TimestampType)) // or df.select($"t".cast("timestamp")) 

得到正確的日期時間或使用unix_timestamp(星火1.5+,在星火< 1.5,你可以使用相同的名稱的蜂巢UDF)功能:

import org.apache.spark.sql.functions.unix_timestamp 

df.select(unix_timestamp($"t")) 

得到的數值表示(Unix時間戳在)。

在旁註中,沒有理由不能直接orderBy($"t")。字典順序應該在這裏工作得很好。

+0

謝謝,該UNIX_TIMESTAMP它映射到秒,真正幫助後續分揀! –

2

此外,以@ zero323,如果你正在寫純SQL可以使用CAST操作如下:@ zero323

df.registerTempTable("myTable")  
sqlContext.sql("SELECT CAST(t as timestamp) FROM myTable") 
+0

適用於spark 1.4.1 – Toren