[英]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.