我有一个2列的spark数据框。
我想在spark数据帧上生成第三列。
第3列必须使用前2列从DB获取的值填充。
public static string encryptText(string text, int keysize, string publickeyxml)
{
var data = algorithm(Encoding.UTF8.GetBytes(text), keysize, publicKeyxml);
return Convert.ToBase64String(data);
}
public static byte[] algorithm(byte[] text, int keysize, string publickeyxml)
{
using (var provider = new RSACryptoServiceProvider(keysize))
{
provider.FromXmlString(publickeyxml);
return provider.Encrypt(text, OAEP);
}
}
string plaintext = "abcdefghijklmnopqrstuvwxyz";
ciphertext = encryptText(plaintext, keysize, publickey);
string ciphertext;
string publickey = "mypublickey"
我不知道如何在函数data = data.withColumn("z", getValueOfZ(col("x"),col("y")));
中使用x和y填充y的值。
getValueOfZ()需要基于x和y的值执行选择查询,并返回Z的值。
答案 0 :(得分:0)
我不知道getValueOfY()
应该做什么。 Spark有3种选择。
如果这是一个简单的操作,则可以使用expr()
。例如,如果结果是x和y的和,则可以使用:
df = df.withColumn("y", expr("x + y")));
您可以通过以下方式使用expr()
:
import static org.apache.spark.sql.functions.expr;
Spark提供了很多这些功能。他们的Javadoc is available here。
如果您的代码更复杂且无法通过表达式或函数处理,则可以调用UDF(用户定义函数)。
我希望这会有所帮助,不要犹豫发表评论以提出更多问题。