Итерация Spark для конкретного столбца данных - PullRequest
0 голосов
/ 04 января 2019

Я хочу зашифровать несколько столбцов фрейма данных 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")

, столбец - это имя файла.

...