You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by zs...@apache.org on 2010/01/14 04:02:03 UTC
svn commit: r899037 - in /hadoop/hive/branches/branch-0.5: CHANGES.txt
ql/src/java/org/apache/hadoop/hive/ql/udf/UDFFromUnixTime.java
ql/src/test/queries/clientpositive/udf5.q
ql/src/test/results/clientpositive/udf5.q.out
Author: zshao
Date: Thu Jan 14 03:02:03 2010
New Revision: 899037
URL: http://svn.apache.org/viewvc?rev=899037&view=rev
Log:
HIVE-983. Function from_unixtime takes long. (Ning Zhang via zshao)
Modified:
hadoop/hive/branches/branch-0.5/CHANGES.txt
hadoop/hive/branches/branch-0.5/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFFromUnixTime.java
hadoop/hive/branches/branch-0.5/ql/src/test/queries/clientpositive/udf5.q
hadoop/hive/branches/branch-0.5/ql/src/test/results/clientpositive/udf5.q.out
Modified: hadoop/hive/branches/branch-0.5/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.5/CHANGES.txt?rev=899037&r1=899036&r2=899037&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.5/CHANGES.txt (original)
+++ hadoop/hive/branches/branch-0.5/CHANGES.txt Thu Jan 14 03:02:03 2010
@@ -167,6 +167,9 @@
HIVE-1023. typedbytes: datatypes should be derived from data
(namit via He Yongqiang)
+ HIVE-983. Function from_unixtime takes long.
+ (Ning Zhang via zshao)
+
OPTIMIZATIONS
BUG FIXES
Modified: hadoop/hive/branches/branch-0.5/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFFromUnixTime.java
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.5/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFFromUnixTime.java?rev=899037&r1=899036&r2=899037&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.5/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFFromUnixTime.java (original)
+++ hadoop/hive/branches/branch-0.5/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFFromUnixTime.java Thu Jan 14 03:02:03 2010
@@ -26,6 +26,7 @@
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.hive.ql.exec.description;
import org.apache.hadoop.io.IntWritable;
+import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
@description(
@@ -59,20 +60,44 @@
* @param format See http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html
* @return a String in the format specified.
*/
+ public Text evaluate(LongWritable unixtime, Text format) {
+ if (unixtime == null || format == null) {
+ return null;
+ }
+
+ return eval(unixtime.get(), format);
+ }
+
+ /**
+ * Convert UnixTime to a string format.
+ * @param unixtime The number of seconds from 1970-01-01 00:00:00
+ * @param format See http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html
+ * @return a String in the format specified.
+ */
public Text evaluate(IntWritable unixtime, Text format) {
if (unixtime == null || format == null) {
return null;
}
+ return eval((long)unixtime.get(), format);
+ }
+
+ /**
+ * Internal evaluation function given the seconds from 1970-01-01 00:00:00
+ * and the output text format.
+ * @param unixtime seconds of type long from 1970-01-01 00:00:00
+ * @param format display format. See http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html
+ * @return elapsed time in the given format.
+ */
+ private Text eval(long unixtime, Text format) {
if (!format.equals(lastFormat)) {
formatter = new SimpleDateFormat(format.toString());
lastFormat.set(format);
}
// convert seconds to milliseconds
- Date date = new Date(unixtime.get() * 1000L);
+ Date date = new Date(unixtime * 1000L);
result.set(formatter.format(date));
return result;
}
-
}
Modified: hadoop/hive/branches/branch-0.5/ql/src/test/queries/clientpositive/udf5.q
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.5/ql/src/test/queries/clientpositive/udf5.q?rev=899037&r1=899036&r2=899037&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.5/ql/src/test/queries/clientpositive/udf5.q (original)
+++ hadoop/hive/branches/branch-0.5/ql/src/test/queries/clientpositive/udf5.q Thu Jan 14 03:02:03 2010
@@ -6,3 +6,8 @@
SELECT from_unixtime(1226446340), to_date(from_unixtime(1226446340)), day('2008-11-01'), month('2008-11-01'), year('2008-11-01'), day('2008-11-01 15:32:20'), month('2008-11-01 15:32:20'), year('2008-11-01 15:32:20') FROM dest1;
SELECT from_unixtime(1226446340), to_date(from_unixtime(1226446340)), day('2008-11-01'), month('2008-11-01'), year('2008-11-01'), day('2008-11-01 15:32:20'), month('2008-11-01 15:32:20'), year('2008-11-01 15:32:20') FROM dest1;
+
+EXPLAIN
+SELECT from_unixtime(unix_timestamp('2010-01-13 11:57:40', 'yyyy-MM-dd HH:mm:ss'), 'MM/dd/yy HH:mm:ss') from dest1;
+
+SELECT from_unixtime(unix_timestamp('2010-01-13 11:57:40', 'yyyy-MM-dd HH:mm:ss'), 'MM/dd/yy HH:mm:ss') from dest1;
Modified: hadoop/hive/branches/branch-0.5/ql/src/test/results/clientpositive/udf5.q.out
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.5/ql/src/test/results/clientpositive/udf5.q.out?rev=899037&r1=899036&r2=899037&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.5/ql/src/test/results/clientpositive/udf5.q.out (original)
+++ hadoop/hive/branches/branch-0.5/ql/src/test/results/clientpositive/udf5.q.out Thu Jan 14 03:02:03 2010
@@ -65,9 +65,55 @@
PREHOOK: query: SELECT from_unixtime(1226446340), to_date(from_unixtime(1226446340)), day('2008-11-01'), month('2008-11-01'), year('2008-11-01'), day('2008-11-01 15:32:20'), month('2008-11-01 15:32:20'), year('2008-11-01 15:32:20') FROM dest1
PREHOOK: type: QUERY
PREHOOK: Input: default@dest1
-PREHOOK: Output: file:/data/users/njain/hive5/hive5/build/ql/tmp/478157482/10000
+PREHOOK: Output: file:/data/users/nzhang/work/876/apache-hive/build/ql/tmp/1960950507/10000
POSTHOOK: query: SELECT from_unixtime(1226446340), to_date(from_unixtime(1226446340)), day('2008-11-01'), month('2008-11-01'), year('2008-11-01'), day('2008-11-01 15:32:20'), month('2008-11-01 15:32:20'), year('2008-11-01 15:32:20') FROM dest1
POSTHOOK: type: QUERY
POSTHOOK: Input: default@dest1
-POSTHOOK: Output: file:/data/users/njain/hive5/hive5/build/ql/tmp/478157482/10000
+POSTHOOK: Output: file:/data/users/nzhang/work/876/apache-hive/build/ql/tmp/1960950507/10000
2008-11-11 15:32:20 2008-11-11 1 11 2008 1 11 2008
+PREHOOK: query: EXPLAIN
+SELECT from_unixtime(unix_timestamp('2010-01-13 11:57:40', 'yyyy-MM-dd HH:mm:ss'), 'MM/dd/yy HH:mm:ss') from dest1
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN
+SELECT from_unixtime(unix_timestamp('2010-01-13 11:57:40', 'yyyy-MM-dd HH:mm:ss'), 'MM/dd/yy HH:mm:ss') from dest1
+POSTHOOK: type: QUERY
+ABSTRACT SYNTAX TREE:
+ (TOK_QUERY (TOK_FROM (TOK_TABREF dest1)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION from_unixtime (TOK_FUNCTION unix_timestamp '2010-01-13 11:57:40' 'yyyy-MM-dd HH:mm:ss') 'MM/dd/yy HH:mm:ss')))))
+
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 is a root stage
+
+STAGE PLANS:
+ Stage: Stage-1
+ Map Reduce
+ Alias -> Map Operator Tree:
+ dest1
+ TableScan
+ alias: dest1
+ Select Operator
+ expressions:
+ expr: from_unixtime(unix_timestamp('2010-01-13 11:57:40', 'yyyy-MM-dd HH:mm:ss'), 'MM/dd/yy HH:mm:ss')
+ type: string
+ outputColumnNames: _col0
+ File Output Operator
+ compressed: false
+ GlobalTableId: 0
+ table:
+ input format: org.apache.hadoop.mapred.TextInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+
+
+PREHOOK: query: SELECT from_unixtime(unix_timestamp('2010-01-13 11:57:40', 'yyyy-MM-dd HH:mm:ss'), 'MM/dd/yy HH:mm:ss') from dest1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@dest1
+PREHOOK: Output: file:/data/users/nzhang/work/876/apache-hive/build/ql/tmp/1373998585/10000
+POSTHOOK: query: SELECT from_unixtime(unix_timestamp('2010-01-13 11:57:40', 'yyyy-MM-dd HH:mm:ss'), 'MM/dd/yy HH:mm:ss') from dest1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@dest1
+POSTHOOK: Output: file:/data/users/nzhang/work/876/apache-hive/build/ql/tmp/1373998585/10000
+01/13/10 11:57:40