Я хочу зашифровать несколько столбцов фрейма данных Spark на основании какого-либо условия.Приведенная ниже функция шифрования и дешифрования работает нормально:
def EncryptDecrypt(Encrypt, str):
key = b'B5oRyf5Zs3P7atXIf-I5TaCeF3aM1NEILv3A7Zm93b4='
cipher_suite = Fernet(key)
if Encrypt is True:
a = bytes(str, "utf-8")
return cipher_suite.encrypt(bytes(a))
else:
return cipher_suite.decrypt(str)
Теперь я хочу перебрать определенный столбец данных, чтобы зашифровать его.Если условие шифрования выполнено, я должен выполнить итерацию по этому столбцу данных.
if sqldf.filter(condition satistified).count() > 0:
iterate over that specific column to encrypt its data
Я должен сохранить позиции столбцов данных, поэтому не могу добавить зашифрованный столбец в конце.
Пожалуйста, помогите мне перебрать строки данных и сообщить, есть ли другой, более оптимизированный подход.
Ниже приводится подход, который я использую (Редактирует) -
Я пытаюсь вызвать udf через spark sql, но получаю a = bytes(str, "utf-8")
TypeError: encoding without a string argument
ошибку.Ниже код, который я использую, чтобы зарегистрировать udf и выполнить его с помощью spark sql
spark.udf.register("my_udf", EncryptDecrypt, ByteType())
sqldf1 = spark.sql("Select " + my_udf(True, " + column + ") from df1")
, столбец - это имя файла.