我正在尝试GPG加密spark数据帧列 FName
df = spark.createDataFrame([('Andy', 'NY'), ('Bob', 'PA'), ('Cindy', 'DC')], ("FName", "City"))
我创建了一个udf,它将字符串值作为输入,并将加密字符串作为输出。
gpg = gnupg.GPG(gnupghome='/home/testgpguser/gpghome')
encrypt_str = udf(lambda string_value: gpg.encrypt(string_value, 'myrecepeintemailid', passphrase='mypassphrase'))
我正在申请我的udf如下:
df = df.withColumn('Encrypted_FName', encrypt_str(col('FName')))
但是,我认为整个列都已通过,并且它没有正确加密值。
如何遍历数据帧的每个值并将其传递string_value给udf?
您可以创建一个新的数据帧。
对于必须进行哈希处理的列,我有类似的问题。python函数定义如下:
def make_hash(txt):
import hashlib
m = hashlib.sha256()
m.update(txt.encode())
print ("hashed ", m)
return m.hexdigest()
定义了一个udf:
from pyspark.sql.functions import udf
u_make_hash = udf(make_hash)
并创建了一个新的DataFrame,除了哈希列之外的所有列:
streamingOutputDF = streamingInputDF.select(u_make_hash(streamingInputDF['connectionDeviceId']).alias("Id"), streamingInputDF['*']) \
.drop("connectionDeviceId")
我没有检查你的udf,假设没有问题,以下声明应该这样做:
dfnew = df.select((encrypt_str['FName']).alias("Encrypted_FName"))
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。