gpt4 book ai didi

python - 在每个映射器之间共享特定数据

转载 作者:可可西里 更新时间:2023-11-01 15:17:35 24 4
gpt4 key购买 nike

我想添加一个特定的记录子集,以便在每个映射器中与每个记录 block 合并,我通常如何在 Hadoop 中执行此操作?在 Python 流媒体包 mrJob 中?

最佳答案

DistributedCache 是 Map-Reduce 框架提供的一种设施,用于缓存应用程序所需的文件(文本、存档、jar 等)。

应用程序通过 url(hdfs://或 http://)指定要通过 JobConf 缓存的文件。 DistributedCache 假定通过 hdfs://url 指定的文件已经存在于文件系统中由 url 指定的路径。

在该节点上执行作业的任何任务之前,框架会将必要的文件复制到从属节点上。它的效率源于这样一个事实,即每个作业只复制一次文件,并且能够缓存在从属服务器上未归档的文件。

DistributedCache 可用于分发简单的只读数据/文本文件和/或更复杂的类型,如存档、jar 等。存档(zip、tar 和 tgz/tar.gz 文件)在从属节点。可以选择将 Jar 添加到任务的类路径中,这是一种基本的软件分发机制。文件有执行权限。用户还可以选择将分布式缓存文件符号链接(symbolic link)到任务的工作目录中。

DistributedCache 跟踪缓存文件的修改时间戳。显然,缓存文件不应在作业执行时由应用程序或外部修改。

对于 Python mrJob :-

我认为你必须使用

mrjob.compat.supports_new_distributed_cache_options(版本)

然后使用 -files 和 -archives 代替 -cacheFile 和 -cacheArchive

也许你会得到更多here

关于python - 在每个映射器之间共享特定数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16965256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com