问题标签 [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 回答
373 浏览

java - 在 MRJob 中运行步骤之前将 S3 数据加载到 HDFS 的特定语法示例是什么?

当我运行我的 MRJob 脚本并使用 CLI 为工作启动 EMR 集群时,我试图弄清楚如何将数据从 S3 加载到集群中的 HDFS 上。我想将此作为设置过程的一部分。

我搜索了许多地方以深入了解与 MRJob 一起使用的正确语法,以便将我的 S3 数据预加载到 HDFS 中。我仍在了解术语和流程。

MRJob 在其文档中提到了 JarStep 和 Hadoop Streaming:https ://pythonhosted.org/mrjob/guides/writing-mrjobs.html

Yelp 对此有一个讨论主题:https ://github.com/Yelp/mrjob/pull/665

AWS 有一个工具 S3DistCp 来提供加载语法,并且示例与 Java 相关。(我不能发布超过 2 个链接,但谷歌搜索会提供更多信息)

我的方法是将 JarStep 作为 MRStep 之前的一个步骤包含在我的 MRJob 脚本的步骤方法中。我试图将 S3DistCp 命令作为参数传递。

我已经尝试了一些变体,有无引号或引号分隔输入和输出或逗号之间的空格。我得到的主要错误是“线程'main'java.lang.RuntimeException中的异常:参数--src,,--desc,,不匹配。

我发现的示例类似于以下内容:

不清楚 JarStep.INPUT 是否应该被替换或在其他地方定义。我开始认为我应该在 --jobconf 下的 CLI 上传递 java 命令,以便它与 S3DistCp 文档保持一致。

任何想法或只是简单的例子,请发送给我。

0 投票
2 回答
2132 浏览

python - 从 IPython 笔记本运行 MRJob

我正在尝试从 IPython 笔记本运行 mrjob 示例

然后用代码运行它

并得到错误:

有没有办法从 IPython 笔记本运行 mrjob?

0 投票
1 回答
317 浏览

python - 在 mrjob 执行期间解压缩 + un-tar 输入文件

我想使用 mrjob(使用 EMR)在 S3 中高效地处理大量数据。我可以以任何我想要的方式构建数据,但显然我想尽我所能发挥 EMR 在 S3 数据上运行的优势。

我的数据包含数百万个网页(假设每个 50K)。直观地说,创建一组 .tar.gz 文件(简称 .tgz)对我来说是有意义的,每个文件都有数千页,这样 .tgz 文件大小约为 2GB 左右。然后我想将这些 .tgz 文件加载到 S3 上并编写一个 mrjob 任务来处理这些(例如,10 个 EC2 实例)。

我被构建这些 .tgz 文件所吸引,因为它们代表了一种非常压缩的数据形式,因此它们应该最大限度地减少网络流量(大小以及传输延迟)。我也喜欢构建多个 .tgz 文件,因为我显然想利用我计划为这项工作分配的多个 EMR 实例。

如果必须,我可以连接文件,这样我就可以避免归档 (tar) 步骤而只处理 .gz 文件,但是将原始数据压缩然后压缩会更容易。

我是否以正确的方式考虑这个问题,如果是这样,我如何配置/指定 mrjob 以解压缩和解压缩,以便实例仅处理其中一个 .tgz 文件的全部内容?

0 投票
1 回答
1348 浏览

amazon-web-services - 如何在 EMR 上运行 mrjob

我尝试按照教程运行 mapreduce。

我在文件夹 ~/hello_mapreduce 中的 EC2 实例上上传了文件 mrjob.conf、readme.txt 和 word_count.py 并尝试运行命令:

python word_count.py -r emr README.txt

它返回以下内容:

我可能错了,但我猜可能/主要问题是文件 mrjob.conf 不可见但不知道为什么。

mrjob.conf 的内容如下:

作为 AWS 用户新手,如果有人能帮助解决问题以便使用 mrjob 和 AWS 成功运行 mapreduce,我将非常感激。

谢谢!

0 投票
1 回答
2208 浏览

python - 在 Hadoop 上使用 mrjob 启动作业时出错

我是 hadoop 和 mrjob 的新手,这本书真的帮助了我很多学习。我试图在 hadoop 上运行 mrSVM.py,因为它在本地运行良好。

但是我运行了以下命令:python mrSVM.py -r hadoop kickStart.txt 它给出了以下错误:

请帮我解决这个问题。

0 投票
1 回答
1042 浏览

python - Python hadoop mapreduce作业使用mrjob subprocess.CalledProcessError

我正在尝试在我的自定义数据上运行 mrjob 网站上的基本示例。我已经使用流式成功运行了 Hadoop map reduce,我也成功地尝试了没有 Hadoop 的脚本,但是现在我试图通过 mrjob 通过以下命令在 Hadoop 上运行它。

mapred.py 的源代码如下:

不幸的是,我收到以下错误:

在我看来,mrjob 无法在 HDFS 中创建一些目录,但不幸的是我不知道如何解决这个问题。

我的 Hadoop 是 cloudera CDH5.1。快速开始。

提前感谢您的任何建议和意见。

编辑:

我曾尝试在 cloudera CDH4.7 上运行相同的代码。快速入门,效果很好。所以我修改后的问题是:cloudera CDH5.1。mrjob 框架支持?如果是这样,那么如何运行它?

0 投票
1 回答
142 浏览

python - 如何在 EMR 上使用 MrJob 0.4.2 设置 IAM 角色

我正在尝试使用 mrjob 0.4.2 为我的 EMR 集群设置 IAM 角色。我看到 0.4.3 中有一个新选项可以做到这一点,但它仍在开发中,我更喜欢使用稳定版本。

关于如何做到这一点的任何想法?我尝试使用 Amazon 的控制台创建集群,然后使用 mrjob 运行引导 + 步骤操作(通过连接到该集群),但没有成功。

另一种选择是能够更改 EMR 实例的默认权限,以便 mrjob 能够利用它。

0 投票
1 回答
2065 浏览

hadoop - 在 hadoop 流式 mapreduce 中使用组合器(使用 mrjob)

当我学习 mapreduce 时,其中一个关键组件是组合器。这是 mapper 和 reducer 之间的一个步骤,它本质上是在 map 阶段结束时运行 reducer,以减少 mapper 输出的数据行数。随着我需要处理的数据大小的增加(在数 TB 级),reduce 步骤变得异常缓慢。我和我的一个朋友谈过,他说这也是他的经验,他没有使用组合器,而是使用哈希函数对他的 reduce 键进行分区,这减少了 reduce 步骤中每个键的值的数量. 我试过了,它奏效了。有没有其他人有过这种组合器步骤不能很好地扩展的经验,为什么我找不到这个问题的任何文档以及解决方法?我'

[编辑] 这是我朋友建议的解决方法的一个示例,它比组合器工作得快得多:

而不是输出word, count

映射器输出(word, hash(timestamp) % 1024), count

然后有2个reduce步骤来合并mapper的结果。

0 投票
1 回答
1241 浏览

hadoop - 在 python MRJob 中,如何设置临时输出目录的选项

我正在使用 MRJob 将非常简单的字数作为标准的 hadoop 作业运行:

此打印错误表明它无法为临时输出创建临时目录:

假设我无法创建 MRJob 默认所需的目录。是否可以通过命令行将选项传递给 MRJob?到目前为止,我发现的唯一选择是base_tmp_dir。在描述中,它提到了“将本地临时目录放入其中的路径”。其中“本地”不是我正在寻找的,因为临时输出目录应该在 hdfs 中。不过,我打算试一试(:

或者

但失败了,因为 MRJob 抱怨没有这样的选择:

word_count.py是在这里找到的标准。可能是我缺少一些关于 MRJobj 的基本知识,或者我可能不得不回到 hadoop 流。

0 投票
1 回答
386 浏览

python - 我可以在分区 hive 表上使用 mrjob python 库吗?

我拥有对 hadoop 服务器/集群的用户访问权限,其中包含仅存储在 hive (avro) 中的分区表/文件中的数据。我想知道是否可以在这些表上使用 python mrjob 执行 mapreduce?到目前为止,我一直在本地对存储在 CDH5 上的文本文件进行 mrjob 测试,开发的简易性给我留下了深刻的印象。

经过一番研究,我发现有一个名为 HCatalog 的库,但据我所知,它不适用于 python(仅限 Java)。不幸的是,我没有太多时间学习 Java,我想坚持使用 Python。

你知道有什么方法可以在 hive 存储的数据上运行 mrjob 吗?

如果这是不可能的,有没有办法将 python 编写的 mapreduce 代码流式传输到 hive?(我宁愿不将mapreduce python文件上传到hive)