如何在 pyspark DataFrame 上下文中调用 aes_encrypt(和其他 Spark SQL 函数)

How to call aes_encrypt (and other Spark SQL functions) in a pyspark DataFrame context

我需要在 DataFrame 上下文中调用新的 Spark 函数 aes_encrypt

函数可以在 SQL 上下文中调用,如下所示:

SELECT *, aes_encrypt(col1, key, 'GCM') AS col1_encrypted FROM myTable

或者像这样:

df = sql("SELECT *, aes_encrypt(col1, key, 'GCM') AS col1_encrypted FROM myTable")

有没有其他方法可以在 DataFrame 上下文中调用它,像这样?

from pyspark.sql.functions import aes_encrypt

df = table("myTable").withColumn("col1_encrypted", aes_encrypt("col1", key, 'GCM')

(我知道它不能导入,因为它存在于pyspark中,这只是可以调用的其他Spark函数的一个例子)

您可以为此使用 expr 函数 (doc) - 只需传递相应的 SQL 表达式:

df = table("myTable") \
  .withColumn("col1_encrypted", expr("aes_encrypt(col1, key, 'GCM')"))

另一种选择是selectExpr (doc):

df = table("myTable") \
  .selectExpr("*", "aes_encrypt(col1, key, 'GCM') as col1_encrypted")