首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从计算整个列的哈希数

从计算整个列的哈希数
EN

Stack Overflow用户
提问于 2022-06-30 13:35:48
回答 1查看 166关注 0票数 0

我有一个大数据框架(大约4000万行),如下所示:

代码语言:javascript
运行
复制
|col A | col B |
|------|-------|
|valA1 | valB1 |
|valA2 | valB2 |

我想比较两列在不同的数据框架,在不同的工作空间。我不能把他们两个带到同一个环境。我想要的是为每个列创建一个散列值,以便与其他数据帧中的其他列进行比较。

简单的方法是将列中的所有值连接起来,然后散列结果字符串。但是由于数据帧的大小,我不能这样做。

到目前为止,我尝试了这个版本,但是花费的时间太长了:

代码语言:javascript
运行
复制
hashlib.sha256(''.join(map(str,df.agg(collect_list(col("colName"))).first()[0])).encode('utf-8')).hexdigest()

而且同样长的时间:

代码语言:javascript
运行
复制
def compute_hash(df):
    hasher = hashlib.sha256()
    dataCollect=df.rdd.toLocalIterator()
    for row in dataCollect:
        hasher.update(row['colName'].encode('utf-8'))
    return hasher.hexdigest()

这能在合理的时间内实现吗?

EN

回答 1

Stack Overflow用户

发布于 2022-06-30 13:56:41

您不需要立即散列整个字符串。

sha256库中使用hashlib的示例

代码语言:javascript
运行
复制
import hashlib

column = ['valA1', 'valA2', 'valA3']

hasher = hashlib.sha256()

for row in column:
    hasher.update(row.encode('utf-8'))

print(hasher.hexdigest())
# >>> 68f900960718b4881107929da0918e0e9f50599b12ebed3ec70066e55c3ec5f4

使用update方法将处理数据,就像使用它一样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72816815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档