try_aes_decrypt(input, key, mode, padding)
Описание
Функция try_aes_decrypt()
пытается расшифровать данные, зашифрованные с помощью AES, и возвращает NULL в случае ошибки вместо вызова исключения.
Параметры
input
: Column - зашифрованные данныеkey
: Column - ключ шифрованияmode
: String - режим шифрования (например, "ECB", "CBC")padding
: String - метод дополнения (например, "PKCS")
Возвращаемое значение
Binary - расшифрованные данные или NULL в случае ошибки
Пример использования
from pyspark.sql.functions import try_aes_decrypt, aes_encrypt
from pyspark.sql import SparkSession
# Создаем SparkSession
spark = SparkSession.builder.appName("try_aes_decrypt_example").getOrCreate()
# Создаем DataFrame с данными
data = [("Hello",), ("World",), ("Spark",)]
df = spark.createDataFrame(data, ["text"])
# Шифруем и расшифровываем данные
key = "1234567890123456" # 16-байтовый ключ
df = df.withColumn("encrypted", aes_encrypt("text", key, "ECB", "PKCS"))
result = df.select(
"text",
try_aes_decrypt("encrypted", key, "ECB", "PKCS").alias("decrypted")
).show(truncate=False)
# Результат:
# +-----+---------+
# |text |decrypted|
# +-----+---------+
# |Hello|Hello |
# |World|World |
# |Spark|Spark |
# +-----+---------+
Примечания
- В случае ошибки дешифрования возвращает NULL вместо вызова исключения
- Для шифрования используйте
aes_encrypt()
- Для обработки ошибок также используйте:
assert_true()
для проверки условийraise_error()
для вызова ошибки с сообщением