问题标签 [mrjob]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1790 浏览

python - 如何使用 mrjob 迭代处理一个目录下的所有文件

我正在使用 mrjob 处理一批文件并获取一些统计信息。我知道我可以在单个文件上运行 mapreduce 作业,例如

但是如何将文件目录提供给脚本?文件目录结构是这样folder/subfolders/files的,有什么建议吗?

0 投票
2 回答
2608 浏览

python - 如何从eclipse调试用mrjob编写的python MapReduce程序

我正在尝试在 Ubuntu 下使用 eclipse 调试在 python 的 mrjob 库中编写的 mapreduce 作业。有谁知道如何做到这一点?

0 投票
1 回答
303 浏览

python - 关于在 Amazon EMR 上使用 mrjob 运行 Mapreduce 程序的一些基本疑问

我是 mrjob 的新手,在 Amazon EMR 上运行作业时遇到问题。我将按顺序编写它们。

  1. 我可以在本地机器上运行 mrjob。但是,当我在 /home/ankit/.mrjob.conf 和 /etc/mrjob.conf 中有 mrjob.conf 时,该作业不会在我的本地计算机上执行。这就是我得到的。https://s3-ap-southeast-1.amazonaws.com/imagna.sample/local.txt
  2. 文档中“MR_CONF指定的位置”中的MRJOB_CONF是什么?
  3. 'base_tmp_directory' 有什么用?另外,我是否需要在开始作业之前在 S3 中上传输入数据,或者它会在开始执行时从我的本地计算机加载?
  4. 如果我使用一些库,如 numpy、scikit 等,我需要做一些引导吗?如果是,如何?
  5. 这就是我在 EMR https://s3-ap-southeast-1.amazonaws.com/imagna.sample/emr.txt上执行运行作业的命令时得到的

有什么解决办法吗?

非常感谢。

0 投票
1 回答
210 浏览

hadoop - mrjob 文档中的“MRJOB_CONF 指定的位置”

mrjob 文档中的“MRJOB_CONF 指定的位置”是哪个路径?链接到 mrjob 文档:http ://mrjob.readthedocs.org/en/latest/guides/configs-basics.html

0 投票
4 回答
818 浏览

hadoop - 是否有一个好的库可以帮助使用 Hadoop Streaming 和 Python 链接 MapReduce 作业?

这个问题回答了我的部分问题,但不完全。

如何运行管理此脚本的脚本,它来自我的本地文件系统吗?像 MrJob 或 Dumbo 这样的东西到底在哪里出现?还有其他选择吗?

我正在尝试运行 K-Means,其中每次迭代(一个 MapReduce 作业)输出将是使用 Hadoop Streaming 和 Python 进行下一次迭代的输入。

我没有太多经验,任何信息都可以帮助我完成这项工作。谢谢!

0 投票
2 回答
12914 浏览

python - 如何为 Python 程序分配更多内存?它在 4GB RAM 上消耗的空间不超过 64MB

我有一个 Python 程序在 4GB RAM 32 位 12.04 Ubuntu 上运行一些输入数据。该程序的时间和空间复杂度均为 O(n)。当输入数据约为 100 kb 时,它在大约 4 秒内完成执行,峰值 RAM 消耗为 0.5%(在 LINUX 中使用“top”命令)。但是,当我尝试输入大小为 500kB、2.5MB 和 16 MB 的数据时,该过程并未在 1 小时内完成(在每种情况下,我都必须使用 Cntrl C 取消)并且内存消耗停留在 1.6%(即每种情况下大约 64MB)。我可以以某种方式为这个 Python 进程分配更多的 RAM 内存吗?

注意:我正在使用 Python 制作的“mrjob”库在 Python 中实现 Map Reduce 作业。

以下是输入 csv 文件为 100 kB 时成功执行的日志。

这是输入 csv 文件为 2.5 MB 时的执行日志和回溯。

0 投票
1 回答
960 浏览

hadoop - Hadoop 上的 MRJob 和 mapreduce 任务分区

我正在尝试使用 Python MRJob lib 执行 mapreduce 作业,但在让它正确分布在我的 Hadoop 集群中时遇到了一些问题。我相信我只是错过了 mapreduce 的基本原则。我的集群是一个小型的,一主一从的测试集群。基本思想是我只是请求一系列带有参数的网页,对它们进行一些分析并返回网页上的一些属性。

我的 map 函数的输入只是一个带有以下参数的 URL 列表:

这样初始输入的键值对就是 key:None, val:URL。

以下是我的地图功能:

很简单,我只是检查以确保 URL 有一个参数并将 URL 的域作为键和一个元组给我 URL 和查询参数作为值,MRJob 友好地将其转换为一个列表以传递给减速器,它如下:

我的问题是只运行一个减速器任务。我希望 reducer 任务的数量等于映射器发出的唯一键的数量。上面代码的最终结果是我有一个在master上运行的reducer,但是slave闲着什么也不做,这显然不理想。我注意到在我的输出中启动了一些映射器任务,但始终只有 1 个减速器任务。除此之外,任务运行顺利,所有工作都按预期进行。

我的问题是……我到底做错了什么?我是否误解了 reduce 步骤或在某处搞砸了我的键值对?为什么没有多个减速器在这个工作上运行?

更新:好的,所以从给出的答案中我将 mapred.reduce.tasks 增加到更高(这是我现在意识到的默认值是 1)。这确实是我得到 1 个减速器的原因。我现在看到同时执行 3 个 reduce 任务。我的奴隶现在有一个需要解决的导入错误,但至少我到了某个地方......

0 投票
1 回答
125 浏览

python - 使用 sqlite3dbm 和 mrjob 进行地图减少

我有一个 sqlite3dbm,它将数据存储在键值对中。我需要使用mrjob. 当我运行我的代码xyz.py my_db.db时,mapper fn 无法正常工作。

我为空k

0 投票
2 回答
661 浏览

java - 如何捆绑自定义 hadoop-streaming.jar

我正在尝试CombineFileInputFormat使用 Yelp 的 MrJob 用于 EMR 工具的课程。作业流是使用 hadoop 流创建的,MrJob 的文档表明CombineFileInputFormat该类必须捆绑在自定义的hadoop-streaming.jar.

有关上下文,请遵循此问题

具体来说,我的问题是:具体类应该在哪里CombinedInputFormat.class捆绑或引用hadoop-streaming.jar

我尝试CombinedInputFormat.class通过将其添加到目录org/apache/hadoop/streaming并执行来捆绑:

如果我这样做,则流式作业流程将启动,并选择-inputformat CombinedInputFormatJob 开始第一步并中断,并出现错误:

如果我只是尝试将其设置在根路径中:

我得到的错误是:

我应该如何捆绑 CombinedInputFormat.class 以便正确获取并解决NoClassDefFoundError错误?

0 投票
4 回答
8224 浏览

hadoop - mapreduce 排序和洗牌是如何工作的?

我正在使用 yelps MRJob 库来实现 map-reduce 功能。我知道 map reduce 有一个内部排序和洗牌算法,它根据它们的键对值进行排序。所以如果我在地图阶段之后有以下结果

我知道排序和洗牌阶段会产生以下输出

正如预期的那样

但是,如果我有两个相似的键和不同的值,为什么 sort 和 shuffle 阶段会根据出现的第一个值对数据进行排序?

例如,如果我有以下来自映射器的值列表

预期的输出是

但我得到的输出是

这个 MRjob 库是特定的吗?反正有没有停止这种基于价值的排序?

代码