Our Community is getting an upgrade! To get everything ready for the relaunch, we’ll be placing the site in read-only mode starting September 21st.
We really appreciate your understanding while we get things set up behind the scenes. Catch up on all the exciting details about the move here.
Need help or have questions? Drop us a line at [email protected]
Created 05-03-2017 06:26 AM
select hash ('9SH305EJ5'); OK -339500666
select hash ('9SH305EIT'); OK -339500666
Created 05-03-2017 07:53 AM
It is not supposed to generate unique values. The hash() function is working with ranges. It is supposed to index different ranges with integer values. Think about grouping similar ranges of values in a large data set into smaller subsets and have an index to find the respective subset.
A good explanation can be found there:
http://preshing.com/20110504/hash-collision-probabilities/
If you want to generate unique values, have a look at using UDF (reflect("java.util.UUID", "randomUUID"))
Created 05-03-2017 07:53 AM
It is not supposed to generate unique values. The hash() function is working with ranges. It is supposed to index different ranges with integer values. Think about grouping similar ranges of values in a large data set into smaller subsets and have an index to find the respective subset.
A good explanation can be found there:
http://preshing.com/20110504/hash-collision-probabilities/
If you want to generate unique values, have a look at using UDF (reflect("java.util.UUID", "randomUUID"))
Created 05-09-2017 07:35 AM
@Amol Kulkarni - does that answer your question? Solved?
Created 05-09-2017 01:17 PM
Yes that's a known one. Hash function in hive functions similar to hash algorithm or hash sort logic in data structures.
Like modulo of odd number by 2 is always 1. The same way the two values provided by you results in having same hash value. In order to generate unique values make use of md5() function in hive to generate unique values. However I suggest not to this logic for generation of primary key for a table as the values out of md5() will be a total mess.