Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
md5哈希函数有没有办法在配置单元中生成数值?SQL?火花?_Sql_Apache Spark_Hive - Fatal编程技术网

md5哈希函数有没有办法在配置单元中生成数值?SQL?火花?

md5哈希函数有没有办法在配置单元中生成数值?SQL?火花?,sql,apache-spark,hive,Sql,Apache Spark,Hive,我试着对我的专栏进行散列,但它是字母数字的,而在聚合时,它在hive和spark中花费了太多的时间。 因此,我可以为此编写UDF,或者是否有其他方法将md5转换为数值。我不确定您为什么要将哈希转换为数值格式。通常在其射线形式中,它作为字节[]处理,因为它是128位。将其转换为数字时,必须将其转换为任意精度的BigDecimal,其速度不超过String。如果它很慢,我不认为这是因为MD5生成了一个字符串 如果您仍然想尝试,可以使用 Hive还有一个返回int的散列方法,可能使用java的散列代码

我试着对我的专栏进行散列,但它是字母数字的,而在聚合时,它在hive和spark中花费了太多的时间。
因此,我可以为此编写UDF,或者是否有其他方法将md5转换为数值。

我不确定您为什么要将哈希转换为数值格式。通常在其射线形式中,它作为字节[]处理,因为它是128位。将其转换为数字时,必须将其转换为任意精度的BigDecimal,其速度不超过String。如果它很慢,我不认为这是因为MD5生成了一个字符串

如果您仍然想尝试,可以使用

Hive还有一个返回int的散列方法,可能使用java的散列代码而不是md5,您可以使用它,但我不知道您的用例,所以它可能对您有效。Java哈希代码只有32位,因此效率更高,但冲突的可能性也更高


作为将来的参考,在询问有关SO的问题时,除了您正在尝试做什么之外,还可以多说一点您正在尝试做什么,这样我们可以更好地帮助您。

为什么是MD5?您真的需要加密散列吗,或者一个更快/更短、具有一定冲突概率的散列就足够了吗?因为32位散列函数返回一个int…实际上我在寻找两个包含数十亿条记录的表的连接,所以哪一个是生成键而不是md5散列的最佳方法。我想要唯一的键值,所以有没有其他哈希函数来生成整数中的唯一值?我只想要唯一值convmd5id,16,10你能详细解释一下这个查询吗?实际上,我正在寻找连接两个包含数十亿条记录的表的方法,所以这是生成密钥而不是md5哈希的最佳方法。我想要唯一的键值,所以有没有其他哈希函数来生成整数中的唯一值?我只想要唯一的值——21分钟前的Shree Batale感谢它的工作,但它的关键长度是20个字符。我如何将它的长度设置为32个字符。非常感谢您,阿加因诺夫以这种形式将十六进制转换为十进制。我很困惑,你不是已经有id字段了吗?这两个表不是已经有id了吗?为什么您必须生成自己的?你知道散列不能保证唯一性吗?如果使用数以十亿计的记录,发生冲突的可能性可能非常大。如果不详细描述要连接的两个表,就不可能给出答案,因为构建唯一ID取决于这两个表的关联方式。您需要基于一个或多个用作逻辑键的字段子集来构建id。
 my sql query 
select md5(id) as id from table_name;
its generate alphanumeric value 
conv(md5(id), 16, 10)