You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@livy.apache.org by "wyp (JIRA)" <ji...@apache.org> on 2019/06/27 06:53:00 UTC

[jira] [Created] (LIVY-601) Add support for user defined date format and timezone when transformspark result rows to json

wyp created LIVY-601:
------------------------

             Summary: Add support for user defined date format and timezone when transformspark result rows to json
                 Key: LIVY-601
                 URL: https://issues.apache.org/jira/browse/LIVY-601
             Project: Livy
          Issue Type: Improvement
          Components: REPL
    Affects Versions: 0.6.0
            Reporter: wyp


When Livy get the row data from Spark DataFrame and transform those rows to json, we use DefaultFormats to transform Spark timestamp to scala timestamp which use default timezone.
{code:java}
private implicit def formats = DefaultFormats

val result = spark.sql(code)
val schema = parse(result.schema.json)

// Get the row data
val rows = result.take(maxResult)
  .map {
    _.toSeq.map {
      // Convert java BigDecimal type to Scala BigDecimal, because current version of
      // Json4s doesn't support java BigDecimal as a primitive type (LIVY-455).
      case i: java.math.BigDecimal => BigDecimal(i)
      case e => e
    }
  }

val jRows = Extraction.decompose(rows)

// DefaultFormats defined in org.json4s.DefaultFormats
/** Default date format is UTC time.
 */
object DefaultFormats extends DefaultFormats {
  val UTC = TimeZone.getTimeZone("UTC")

  val losslessDate = {
    def createSdf = {
      val f = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
      f.setTimeZone(UTC)
      f
    }
    new ThreadLocal(createSdf)
  }


}{code}
It would be useful if we can customize the time zone and time format



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)