gpt4 book ai didi

java - 在 Spark UDF JAVA 中传递额外变量

转载 作者:行者123 更新时间:2023-12-02 09:09:37 27 4
gpt4 key购买 nike

我用JAVA编写了一个spark UDF来加密数据帧中的特定列。它是类型1 UDF,并且一次只接受需要加密或解密的字符串。我也想传递相应的密码。我尝试了柯里化(Currying)方法,但无法正确编写该函数。谁能给我建议任何解决方案吗?

public class EncryptString implements UDF1<String, String> {


@Override
public String call(String s) throws Exception {
return Aes256.encrypt(s);
//Aes.encrypt needs to have another variable password.
//So that while calling the UDF we can pass the required password.
}
}

最佳答案

您可以将密码以及任何其他参数作为构造函数参数传递给 EncryptString 类:

public static class EncryptString implements UDF1<String, String> {

private final String password;

public EncryptString(String password) {
this.password = password;
}

public String call(String s) throws Exception {
return Aes256.encrypt(s, password);
}
}

实例化udf时,可以传递实际密码:

spark.sqlContext().udf().register("EncryptUdf", new EncryptString("secret"), DataTypes.StringType);
[...]
spark.sql("select EncryptUdf(_c2) from df").show();

关于java - 在 Spark UDF JAVA 中传递额外变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59527953/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com