Java 用spark实现哈希

Java 用spark实现哈希,java,apache-spark,indexing,pyspark,hashtable,Java,Apache Spark,Indexing,Pyspark,Hashtable,因此,我在Java中实现了分离链式哈希: 下一步是使用spark部署它,我试着阅读教程,但还是迷路了。我如何做到这一点?一种可能是从哈希实现创建一个jar,并在Spark应用程序中注册为UDF,如下所示: spark.udf.registerJavaFunction("udf_hash", "function_name_inside_jar", <returnType e.g: StringType()>) df = df.withColum

因此,我在Java中实现了分离链式哈希:


下一步是使用spark部署它,我试着阅读教程,但还是迷路了。我如何做到这一点?

一种可能是从哈希实现创建一个jar,并在Spark应用程序中注册为UDF,如下所示:

spark.udf.registerJavaFunction("udf_hash", "function_name_inside_jar", <returnType e.g: StringType()>)
df = df.withColumn("hashed_column", expr("udf_hash({})".format("column")))
有用链接:


重要信息:您必须使用--jars在spark submit中定义您的jar,您可以使用下面的UDF来实现这一点:

   #1.define hash id calculation UDF
    def calculate_hashidUDF = udf((uid: String) => {
      val md = java.security.MessageDigest.getInstance("SHA-1")
      new BigInteger( DatatypeConverter.printHexBinary(md.digest(uid.getBytes)), 16).mod(BigInteger.valueOf(10000))
    })
    #2.register hash id calculation UDF as spark sql function
    spark.udf.register("hashid", calculate_hashidUDF)
对于直接散列值,请在上述定义中使用
md
,此函数将返回从1到10000的值


注册为spark udf后,您也可以在
spark.sql
中使用
hashid

谢谢!其目的是使用spark实现它,我不知道是否允许重用我的哈希实现