Saya memiliki data frame dengan kolom unix timestamp (misal.1435655706000), dan saya ingin mengkonversikannya ke data dengan format 'yyyy-MM-DD', saya sudah mencoba nscala-time tetapi tidak berhasil.
val time_col = sqlc.sql("select ts from mr").map(_(0).toString.toDateTime)
time_col.collect().foreach(println)
dan saya mendapat kesalahan: java.lang.IllegalArgumentException: Format tidak valid: "1435655706000" adalah malformed di "6000"
import org.joda.time.{DateTimeZone}
import org.joda.time.format.DateTimeFormat
Anda perlu mengimpor pustaka berikut ini.
val stri = new DateTime(timeInMillisec).toDateTime.toString("yyyy/MM/dd")
Atau menyesuaikan dengan kasus Anda:
val time_col = sqlContext.sql("select ts from mr")
.map(line => new DateTime(line(0).toInt).toDateTime.toString("yyyy/MM/dd"))
Mungkin ada cara lain:
import com.github.nscala_time.time.Imports._
val date = (new DateTime() + ((threshold.toDouble)/1000).toInt.seconds )
.toString("yyyy/MM/dd")
Semoga ini membantu :)
Saya telah memecahkan masalah ini menggunakan pustaka joda-time dengan memetakan pada DataFrame
dan mengubah DateTime
menjadi String:
import org.joda.time._
val time_col = sqlContext.sql("select ts from mr")
.map(line => new DateTime(line(0)).toString("yyyy-MM-dd"))