如何将Spark Dataframe列的每个值作为字符串传递给python UDF?-问答-阿里云开发者社区-阿里云

开发者社区> 社区小助手> 正文

如何将Spark Dataframe列的每个值作为字符串传递给python UDF?

2018-12-12 14:09:31 2373 1

我正在尝试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?

取消 提交回答
全部回答(1)
  • 社区小助手
    2019-07-17 23:20:10

    您可以创建一个新的数据帧。

    对于必须进行哈希处理的列,我有类似的问题。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"))

    0 0
相关问答

3

回答

@aliyun.com邮箱客户端密码登录方式 下线通知

仙游 2015-01-16 14:33:54 125885浏览量 回答数 3

145

回答

【新手入门】云服务器linux使用手册

fanyue88888 2012-11-26 17:14:18 157090浏览量 回答数 145

110

回答

OSS存储服务-客户端工具

newegg11 2012-05-17 15:37:18 292302浏览量 回答数 110

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 146796浏览量 回答数 22

5

回答

公司给开的企业邮箱帐户,为什么用foxmail会提示密码错误?

萝卜兔兔 2015-07-13 10:27:30 143671浏览量 回答数 5

33

回答

Win Server 2003-2016 加密勒索事件必打补丁合集

妙正灰 2017-05-15 10:44:38 277542浏览量 回答数 33

42

回答

【精品问答集锦】Python热门问题

小六码奴 2019-05-30 15:27:34 135565浏览量 回答数 42

1

回答

foxmail 关联企业邮箱提示邮箱地址或者密码错误

2017-12-30 21:50:39 150670浏览量 回答数 1

249

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 302613浏览量 回答数 249

24

回答

【精品问答】python技术1000问(1)

问问小秘 2019-11-15 13:25:00 471462浏览量 回答数 24
+关注
社区小助手
社区小助手是spark中国社区的管理员,我会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关spark的问题及回答。
12
文章
824
问答
推荐问答
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载