[ 
https://issues.apache.org/jira/browse/HIVE-2782?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13204081#comment-13204081
 ] 

Zhenxiao Luo commented on HIVE-2782:
------------------------------------

I think Carl is correct. Order by the fifth character of the src.value field 
does not guarantee deterministic ordering.

How about:

SELECT
  key,
  value,
  LENGTH(CAST(src.key AS BINARY)) as key_length,
  LENGTH(CAST(src.value AS BINARY)) as value_length,
  CONCAT(CAST(src.key AS BINARY), CAST(src.value AS BINARY)) as 
key_value_concat,
  SUBSTR(CAST(src.value AS BINARY), 1, 4) as value_substr
FROM src
ORDER BY key ASC, value ASC, key_length ASC, value_length ASC, key_value_concat 
ASC, value_substr ASC
LIMIT 100;

This should guarantee the ordering.
                
> New BINARY type produces unexpected results with supported UDFS when using 
> MapReduce2
> -------------------------------------------------------------------------------------
>
>                 Key: HIVE-2782
>                 URL: https://issues.apache.org/jira/browse/HIVE-2782
>             Project: Hive
>          Issue Type: Bug
>            Reporter: Zhenxiao Luo
>            Assignee: Carl Steinbach
>         Attachments: HIVE-2782.D1653.1.patch, HIVE-2782.D1653.1.patch
>
>
> When using MapReduce2 for Hive
> ba_table_udfs is failing with unexpected output:
> [junit] Begin query: ba_table_udfs.q
> [junit] 12/01/23 13:32:28 WARN conf.Configuration: mapred.system.dir is 
> deprecated. Instead, use mapreduce.jobtracker.system.dir
> [junit] 12/01/23 13:32:28 WARN conf.Configuration: mapred.local.dir is 
> deprecated. Instead, use mapreduce.cluster.local.dir
> [junit] diff -a -I file: -I pfile: -I hdfs: -I /tmp/ -I invalidscheme: -I 
> lastUpdateTime -I lastAccessTime -I [Oo]wner -I CreateTime -I LastAccessTime 
> -I Location -I LOCATION ' -I transient_lastDdlTime -I last_modified_ -I 
> java.lang.RuntimeException -I at org -I at sun -I at java -I at junit -I 
> Caused by: -I LOCK_QUERYID: -I LOCK_TIME: -I grantTime -I [.][.][.] [0-9]* 
> more -I job_[0-9]*_[0-9]* -I USING 'java -cp 
> /home/cloudera/Code/hive/build/ql/test/logs/clientpositive/ba_table_udfs.q.out
>  
> /home/cloudera/Code/hive/ql/src/test/results/clientpositive/ba_table_udfs.q.out
> [junit] 20,26c20,26
> [junit] < 2   10val_10        1
> [junit] < 3   164val_164      1
> [junit] < 3   150val_150      1
> [junit] < 2   18val_18        1
> [junit] < 3   177val_177      1
> [junit] < 2   12val_12        1
> [junit] < 2   11val_11        1
> [junit] —
> [junit] > 3   120val_120      1
> [junit] > 3   192val_192      1
> [junit] > 3   119val_119      1
> [junit] > 3   187val_187      1
> [junit] > 3   176val_176      1
> [junit] > 3   199val_199      1
> [junit] > 3   118val_118      1
> [junit] Exception: Client execution results failed with error code = 1
> [junit] See build/ql/tmp/hive.log, or try "ant test ... -Dtest.silent=false" 
> to get more logs.
> [junit] junit.framework.AssertionFailedError: Client execution results failed 
> with error code = 1
> [junit] See build/ql/tmp/hive.log, or try "ant test ... -Dtest.silent=false" 
> to get more logs.
> [junit] at junit.framework.Assert.fail(Assert.java:50)
> [junit] at 
> org.apache.hadoop.hive.cli.TestCliDriver.testCliDriver_ba_table_udfs(TestCliDriver.java:129)
> [junit] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> [junit] at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> [junit] at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit] at java.lang.reflect.Method.invoke(Method.java:616)
> [junit] at junit.framework.TestCase.runTest(TestCase.java:168)
> [junit] at junit.framework.TestCase.runBare(TestCase.java:134)
> [junit] at junit.framework.TestResult$1.protect(TestResult.java:110)
> [junit] at junit.framework.TestResult.runProtected(TestResult.java:128)
> [junit] at junit.framework.TestResult.run(TestResult.java:113)
> [junit] at junit.framework.TestCase.run(TestCase.java:124)
> [junit] at junit.framework.TestSuite.runTest(TestSuite.java:243)
> [junit] at junit.framework.TestSuite.run(TestSuite.java:238)
> [junit] at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:420)
> [junit] at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:911)
> [junit] at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:768)
> [junit] See build/ql/tmp/hive.log, or try "ant test ... -Dtest.silent=false" 
> to get more logs.)
> [junit] Cleaning up TestCliDriver
> [junit] Tests run: 2, Failures: 1, Errors: 0, Time elapsed: 10.751 sec
> [junit] Test org.apache.hadoop.hive.cli.TestCliDriver FAILED
> [for] /home/cloudera/Code/hive/ql/build.xml: The following error occurred 
> while executing this line:
> [for] /home/cloudera/Code/hive/build.xml:328: The following error occurred 
> while executing this line:
> [for] /home/cloudera/Code/hive/build-common.xml:453: Tests failed!

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to