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
Apache spark 配置单元与Spark哈希函数产生不同的结果_Apache Spark_Hash_Hive - Fatal编程技术网

Apache spark 配置单元与Spark哈希函数产生不同的结果

Apache spark 配置单元与Spark哈希函数产生不同的结果,apache-spark,hash,hive,Apache Spark,Hash,Hive,我有两份工作做得完全一样。 一个在Hive中,另一个在Spark中。结果中唯一的区别是其中一列是经过哈希处理的字符串。因此,调用hash()时,hive和Spark中的结果是不同的 我确实知道使用了不同的库。 但我想知道(如果可能的话)如何配置Spark以产生与hive相同的结果 是否可以计算出散列函数(例如,3)并在两个引擎中使用它 也许可以创建一个Sparkudf来产生与hive hash()函数相同的结果 我也有同样的问题。我能找到的是,hive中的哈希使用java函数: 另一方面,这是

我有两份工作做得完全一样。 一个在
Hive
中,另一个在
Spark
中。结果中唯一的区别是其中一列是经过哈希处理的字符串。因此,调用
hash()
时,hive和Spark中的结果是不同的

我确实知道使用了不同的库。 但我想知道(如果可能的话)如何配置Spark以产生与hive相同的结果

是否可以计算出散列函数(例如,
3
)并在两个引擎中使用它


也许可以创建一个Spark
udf
来产生与
hive hash()函数相同的结果

我也有同样的问题。我能找到的是,hive中的哈希使用java函数:

另一方面,这是spark中哈希函数的实现:

def hash(*cols):
    """Calculates the hash code of given columns, and returns the result as an int column.

    >>> spark.createDataFrame([('ABC',)], ['a']).select(hash('a').alias('hash')).collect()
    [Row(hash=-757602832)]
    """
    sc = SparkContext._active_spark_context
    jc = sc._jvm.functions.hash(_to_seq(sc, cols, _to_java_column))
    return Column(jc)
然而,laso的spark实现是基于哈希代码的。hashCode的问题在于它不是确定性的,这意味着它依赖于使用它的JVM和系统。因此,虽然实现可能是正确的,但在hive和spark中散列的两个字符串可能会给出不同的结果


因为它们使用不同的散列函数

蜂巢:

火花用的是灰烬