У меня есть искровой фрейм данных
df = spark.createDataFrame([('Andy', 'NY'), ('Bob', 'PA'), ('Cindy', 'DC')], ("FName","City "))
Здесь я пытаюсь создать новый фрейм данных с зашифрованным столбцом Fname. Функция шифрования PGP, приведенная ниже, принимает строку в качестве входных данных и дает зашифрованную строку в качестве выходных.
df.createOrReplaceTempView("Customer")
for line in spark.table("Customer").collect():
gpg = gnupg.GPG()
gpg.import_keys('/home/keys/key.txt')
encry_str=gpg.encrypt(line.FName, 'recipientid', passphrase='passphrase', always_trust=True)
print(encry_str)
Зашифрованная строка выглядит следующим образом:
-----BEGIN PGP MESSAGE-----
Version: GnuPG v2
hQEMAyBWi2alDMW+AQf5AQn4VdbVNEHMWKzXUFRUyW+m1vepxbN//ENHw0F3dzvd
NAldsgZzpCv5pPq4QLYFw4Sq0eWqOK6Ezg4VxvBIB1l5J4cGsx7kMX9sfCU8T7Be
xqF1ZtWoTOqHp/cwt5NQFi+D302kRfUjUooszOl1zHOp9uOP12WEa/eInoCGRza1
z+73TQ1/0lxieuVVsJu4CsQhEDG9atk+rD21sRsfsOEIAzgIaXyBekZJ0zaiLJCe
LSqum0HebBrl5VJ5yozoAlDAIt0+oXsG2JwqsWpoQFKkuQFsqYGJ61k1+nX/st7i
WWKUvWtjb1ABp3XhC+nT8LpZYCNGIkx0wxQCqcsjjNI/AVjRHvbZsrCfZpua+vdJ
Vv/i1ZKfq0r/FPKgspHdCtMx2/ZAEmVZ3paHM/RGuFm82ihQhXkT78Ik//EiZD5D
=mRs6
-----END PGP MESSAGE-----
Ожидаемый вывод
+-----+-----+--------------------+
|FName|City | Encrypted|
+-----+-----+--------------------+
| Andy| NY|-----BEGIN PGP ME...|
| Bob| PA|-----BEGIN PGP ME...|
|Cindy| DC|-----BEGIN PGP ME...|
+-----+-----+--------------------+
Я пытаюсь обновить столбец FName, но получаю исключение
line.FName=gpg.encrypt(line.FName, 'recipientid', passphrase='passphrase', always_trust=True)
Исключение: строка доступна только для чтения.
Как в приведенном выше кадре я могу добавлять / обновлять значения зашифрованных строк в соответствующие столбцы Dataframe?