You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "Hyukjin Kwon (JIRA)" <ji...@apache.org> on 2019/03/21 00:58:00 UTC

[jira] [Resolved] (SPARK-27224) Spark to_json parses UTC timestamp incorrectly

     [ https://issues.apache.org/jira/browse/SPARK-27224?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Hyukjin Kwon resolved SPARK-27224.
----------------------------------
    Resolution: Cannot Reproduce

> Spark to_json parses UTC timestamp incorrectly
> ----------------------------------------------
>
>                 Key: SPARK-27224
>                 URL: https://issues.apache.org/jira/browse/SPARK-27224
>             Project: Spark
>          Issue Type: Bug
>          Components: Spark Core
>    Affects Versions: 2.3.0
>            Reporter: Jeff Xu
>            Priority: Major
>
> When parsing ISO-8601 timestamp, if there is UTC suffix symbol, and more than 3 digits in the fraction part, from_json will give incorrect result.
>  
> {noformat}
> scala> val schema = new StructType().add("t", TimestampType)
> #
> # no "Z", no problem
> #
> scala> val t = "2019-03-20T09:01:03.1234567"
> scala> Seq((s"""{"t":"${t}"}""")).toDF("json").select(from_json(col("json"), schema)).show(false)
> +-------------------------+
> |jsontostructs(json)      |
> +-------------------------+
> |[2019-03-20 09:01:03.123]|
> +-------------------------+
> #
> # Add "Z", incorrect
> #
> scala> val t = "2019-03-20T09:01:03.1234567Z"
> scala> Seq((s"""{"t":"${t}"}""")).toDF("json").select(from_json(col("json"), schema)).show(false)
> +-------------------------+
> |jsontostructs(json)      |
> +-------------------------+
> |[2019-03-20 02:21:37.567]|
> +-------------------------+
> #
> # reduce the # of digits, the conversion is incorrect until only we reach 3 digits
> #
> scala> val t = "2019-03-20T09:01:03.123456Z"
> +-------------------------+
> |jsontostructs(json)      |
> +-------------------------+
> |[2019-03-20 02:03:06.456]|
> +-------------------------+
> scala> val t = "2019-03-20T09:01:03.12345Z
> +-------------------------+
> |jsontostructs(json)      |
> +-------------------------+
> |[2019-03-20 02:01:15.345]|
> +-------------------------+
> scala> val t = "2019-03-20T09:01:03.1234Z"
> +-------------------------+
> |jsontostructs(json)      |
> +-------------------------+
> |[2019-03-20 02:01:04.234]|
> +-------------------------+
> # correct when there is <=3 digits in fraction
> scala> val t = "2019-03-20T09:01:03.123Z"
> +-------------------------+
> |jsontostructs(json)      |
> +-------------------------+
> |[2019-03-20 02:01:03.123]|
> +-------------------------+
> scala> val t = "2019-03-20T09:01:03.999Z"
> +-------------------------+
> |jsontostructs(json)      |
> +-------------------------+
> |[2019-03-20 02:01:03.999]|
> +-------------------------+
> {noformat}
>  
> This could be related to SPARK-17914.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@spark.apache.org
For additional commands, e-mail: issues-help@spark.apache.org