迭代Spark数据框特定列

时间:2019-01-04 04:28:22

标签: python apache-spark encryption pyspark apache-spark-sql

我想根据某种条件对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)

现在,我要遍历特定的dataframe列以对其进行加密。如果满足加密条件,则必须遍历该dataframe列。

if sqldf.filter(condition satistified).count() > 0:
    iterate over that specific column to encrypt its data

我必须保持数据框列的位置,因此不能在末尾添加加密列。

请帮助我遍历数据帧行,并让我知道是否还有其他更优化的方法。


下面是我使用的方法(编辑)-

我正在尝试通过spark sql调用udf,但出现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")

列是文件名。

0 个答案:

没有答案