2017-02-14 10 views
0

にフルタイムスタンプを読んで、私はスパークを学ぶことを試みていると私は以下のようにunix_timestamp機能を使用してタイムスタンプ列でデータフレームを読んでいます:データフレーム

val columnName = "TIMESTAMPCOL" 
    val sequence = Seq(2016-01-20 12:05:06.999) 
    val dataframe = { 
    sequence.toDF(columnName) 
    } 
    val typeDataframe = dataframe.withColumn(columnName, org.apache.spark.sql.functions.unix_timestamp($"TIMESTAMPCOL")) 
    typeDataframe.show 

これは出力を生成します。

+------------+ 
|TIMESTAMPCOL| 
+------------+ 
| 1453320306| 
+------------+ 

どのように私はmsを失うことはありませんので、それを読むことができます.999部分ですか?私はunix_timestamp(col: Col, s: String)を使ってみました。ここで、sはSimpleDateFormatです。例えば "yyyy-MM-dd hh:mm:ss"です。

+0

'あなたが同様にミリ秒でフルタイムを取得するようdate_format'は、内部でのJavaのSimpleDateFormatを使用しています。可能な複製[の](http://stackoverflow.com/questions/41879125/handling-microseconds-in-spark-scala/41879869#41879869) –

+2

[スパークスカラで処理するマイクロ秒]の可能な複製(http:// stackoverflow。 com/questions/41879125/handling-microseconds-in-spark-scala) –

答えて

1

ミリ秒を保持するには、"yyyy-MM-dd HH:mm:ss.SSS"形式を使用します。以下のようにdate_formatを使用できます。

val typeDataframe = dataframe.withColumn(columnName, org.apache.spark.sql.functions.date_format($"TIMESTAMPCOL","yyyy-MM-dd HH:mm:ss.SSS")) 
typeDataframe.show 

これはあなたを与えるだろう

+-----------------------+ 
|TIMESTAMPCOL   | 
+-----------------------+ 
|2016-01-20 12:05:06:999| 
+-----------------------+