![](/img/trans.png)
[英]pyspark - Updating a column based on a calculated value from another calculated column
[英]Pyspark: Prevent Column value from changing once calculated
我有一个 spark dataframe 用于存储为加密生成的密钥。 我使用 UDF 为每一行生成一个密钥,但是每当查询 dataframe 时,密钥就会发生变化。 我尝试将 function 包装在 lit() 中,但它仍然会发生变化。 如何使此列不可变?
代码:
def generate_key():
encryptionKey = Fernet.generate_key().decode('utf-8')
return encryptionKey
get_key = udf(generate_key, StringType())
def key_table(df):
df = df.select("id").withColumn('encKey', lit(get_key()))
return df
每当数据被逐出 memory 并且 Spark 必须重新计算列时,Spark 中的 UDF 都会重新运行,如果您的 UDF 是deterministic
的(即)在给定相同输入的情况下始终返回相同的 output,那么这不会导致任何问题。 但是,在您的情况下,UDF 是non-deterministic
。 解决此问题的一种方法是checkpoint
dataframe,然后进一步使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.