首页 > 解决方案 > Spark xxhash64 在执行环境中不一致

问题描述

我正在尝试使用 Spark 3.0 DataFrame API 内置函数在给定列子集的情况下xxhash64生成long主键列,如下所示:

df_with_id = df.withColumn(
        "CONTRACT_IDENTIFIER",
        xxhash64(
            "SOURCE_SYSTEM",
            "SOURCE_SYSTEM_CONTRACT_IDENTIFIER",
            "CONTRACT_INCEPTION_DATE",
        ),
    )

我还创建了一个单元测试,用于比较DataFrames 和生成的 ID 是否相等。但是,看起来生成的哈希码在执行环境(JVM?)之间并不一致,因为测试在本地运行时成功,但在集成测试 Spark 集群中执行时失败。

所以我的问题是这是否是预期的事情以及是否有其他方法可以实现同样的事情,即通过散列列的子集来创建行 ID?

标签: apache-sparkpysparkhashapache-spark-sql

解决方案


推荐阅读