aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwangyang <wangyang@haizhi.com>2016-01-30 15:20:57 -0800
committerReynold Xin <rxin@databricks.com>2016-01-30 15:20:57 -0800
commitde283719980ae78b740e507e4d70c7ebbf6c5f74 (patch)
treee1735b5c8732304ae8d0879231487c28df044d9b
parent289373b28cd2546165187de2e6a9185a1257b1e7 (diff)
downloadspark-de283719980ae78b740e507e4d70c7ebbf6c5f74.tar.gz
spark-de283719980ae78b740e507e4d70c7ebbf6c5f74.tar.bz2
spark-de283719980ae78b740e507e4d70c7ebbf6c5f74.zip
[SPARK-13100][SQL] improving the performance of stringToDate method in DateTimeUtils.scala
In jdk1.7 TimeZone.getTimeZone() is synchronized, so use an instance variable to hold an GMT TimeZone object instead of instantiate it every time. Author: wangyang <wangyang@haizhi.com> Closes #10994 from wangyang1992/datetimeUtil.
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/DateTimeUtils.scala3
1 files changed, 2 insertions, 1 deletions
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/DateTimeUtils.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/DateTimeUtils.scala
index f18c052b68..a159bc6a61 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/DateTimeUtils.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/DateTimeUtils.scala
@@ -55,6 +55,7 @@ object DateTimeUtils {
// this is year -17999, calculation: 50 * daysIn400Year
final val YearZero = -17999
final val toYearZero = to2001 + 7304850
+ final val TimeZoneGMT = TimeZone.getTimeZone("GMT")
@transient lazy val defaultTimeZone = TimeZone.getDefault
@@ -407,7 +408,7 @@ object DateTimeUtils {
segments(2) < 1 || segments(2) > 31) {
return None
}
- val c = Calendar.getInstance(TimeZone.getTimeZone("GMT"))
+ val c = Calendar.getInstance(TimeZoneGMT)
c.set(segments(0), segments(1) - 1, segments(2), 0, 0, 0)
c.set(Calendar.MILLISECOND, 0)
Some((c.getTimeInMillis / MILLIS_PER_DAY).toInt)