Cómo convertir unix timestamp a fecha en Spark

Tengo un marco de datos con una columna de unix timestamp(eg.1435655706000), y quiero convertirlo a datos con formato 'aaaa-MM-DD', he probado con nscala-time pero no funciona.

lenguaje : scala -->

val time_col = sqlc.sql("select ts from mr").map(_(0).toString.toDateTime)
time_col.collect().foreach(println)

y tengo error java.lang.IllegalArgumentException: Invalid format: "1435655706000" is malformed at "6000"

import org.joda.time.{DateTimeZone}
import org.joda.time.format.DateTimeFormat

Necesita importar las siguientes librerías.

val stri = new DateTime(timeInMillisec).toDateTime.toString("yyyy/MM/dd")

O ajustándose a su caso:

 val time_col = sqlContext.sql("select ts from mr")
                     .map(line => new DateTime(line(0).toInt).toDateTime.toString("yyyy/MM/dd"))

Podría haber otra manera:

  import com.github.nscala_time.time.Imports._

  val date = (new DateTime() + ((threshold.toDouble)/1000).toInt.seconds )
             .toString("yyyy/MM/dd")

Espero que esto ayude :)

Comentarios (0)

He resuelto este problema utilizando la librería joda-time mapeando el DataFrame y convirtiendo el DateTime en un String:

lenguaje : scala -->

import org.joda.time._
val time_col = sqlContext.sql("select ts from mr")
                         .map(line => new DateTime(line(0)).toString("yyyy-MM-dd"))
Comentarios (0)

No es necesario convertir a String antes de aplicar toDataTime con nscala_time

import com.github.nscala_time.time.Imports._

scala> 1435655706000L.toDateTime
res4: org.joda.time.DateTime = 2015-06-30T09:15:06.000Z

`

Comentarios (0)