- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试使用 python MRJob 库在 Amazon EMR 中运行 map-reduce 作业,但我在使用必要的库和包引导节点时遇到了问题。
我的示例 python mrjob
代码:
import re
from mrjob.job import MRJob
from sentClassifier import sentClassify
import nltk
.. do something ..
有一些像 NLTK 这样的库需要导入,还有一些我正在导入的本地模块,比如 from sentClassifier import sentClassify
我想知道什么是引导 EMR 节点的最佳方式,以便这些方法和包可用。该代码在我的本地机器上运行良好。
我的示例 mrjob.conf
文件:
runners:
emr:
aws_access_key_id: ***
aws_secret_access_key: ***
ec2_core_instance_type: m1.large
ec2_key_pair: mykey
ec2_key_pair_file: mykey.pem
num_ec2_core_instances: 5
pool_wait_minutes: 2
pool_emr_job_flows: true
ssh_tunnel_is_open: true
ssh_tunnel_to_job_tracker: true
hadoop:
setup:
- virtualenv venv
- . venv/bin/activate
- pip install mr3po simplejson
- sudo easy_install https://code.google.com/p/nltk/downloads/detail?name=nltk-2.0b9-py2.6.egg&can=2&q=
但是作业失败了。
我已经通读了以下引用资料并尝试了所有的各种方法,仍然没有成功:
错误日志:
Scanning SSH logs for probable cause of failure
Probable cause of failure (from ssh://ec2-54-86-50-115.compute-1.amazonaws.com!172.31.19.60/mnt/var/log/hadoop/userlogs/job_201405030101_0006/attempt_201405030101_0006_m_000002_3/stderr):
Traceback (most recent call last):
File "obidroidMR.py", line 5, in <module>
import nltk
ImportError: No module named nltk
(while reading from s3://mrjob- 51b9493c1a467671/tmp/obidroidMR.shreyas.20140503.012933.336228/files/STDIN)
Attempting to terminate job...
Job appears to have already been terminated
Killing our SSH tunnel (pid 12909)
Traceback (most recent call last):
File "obidroidMR.py", line 107, in <module>
ObidroidReview.run()
File "/Users/shreyas/anaconda/envs/obidroid/lib/python2.7/site-packages/mrjob/job.py", line 494, in run
mr_job.execute()
File "/Users/shreyas/anaconda/envs/obidroid/lib/python2.7/site-packages/mrjob/job.py", line 512, in execute
super(MRJob, self).execute()
File "/Users/shreyas/anaconda/envs/obidroid/lib/python2.7/site-packages/mrjob/launch.py", line 147, in execute
self.run_job()
File "/Users/shreyas/anaconda/envs/obidroid/lib/python2.7/site-packages/mrjob/launch.py", line 208, in run_job
runner.run()
File "/Users/shreyas/anaconda/envs/obidroid/lib/python2.7/site-packages/mrjob/runner.py", line 458, in run
self._run()
File "/Users/shreyas/anaconda/envs/obidroid/lib/python2.7/site-packages/mrjob/emr.py", line 809, in _run
self._wait_for_job_to_complete()
File "/Users/shreyas/anaconda/envs/obidroid/lib/python2.7/site-packages/mrjob/emr.py", line 1599, in _wait_for_job_to_complete
raise Exception(msg)
Exception: Job on job flow j-2R8G1Q3RIE9ED failed with status WAITING: Waiting after step failed
Probable cause of failure (from ssh://ec2-54-86-50-115.compute-1.amazonaws.com!172.31.19.60/mnt/var/log/hadoop/userlogs/job_201405030101_0006/attempt_201405030101_0006_m_000002_3/stderr):
Traceback (most recent call last):
File "obidroidMR.py", line 5, in <module>
import nltk
ImportError: No module named nltk
非常感谢任何帮助
最佳答案
在 mrjob.conf
中,安装包所需的行可能不在应有的位置。应该应用于在 EMR 上运行的作业的东西应该列在 emr:
而不是 hadoop:
下(这是在本地 Hadoop 安装上运行作业时的配置.
如果它是一个简单的 Linux 命令,例如 pip
或 apt-get
,那么您应该能够像这样安装软件包:
runners:
emr:
aws_access_key_id: ***
... all the other stuff ...
bootstrap_cmds:
- sudo apt-get install -y python-boto
- sudo pip install simplejson
我从来没有尝试专门安装 NLTK,所以我无法在这方面帮助您,但您应该能够按照这条线安装。
对于可能更复杂的安装,我建议使用 EMR CLI ssh
连接到您的主节点:
$ ./elastic-mapreduce -j JOB_FLOW_ID --ssh
然后实际尝试安装包。如果您找到一系列成功安装包的 shell 命令,那么您只需将其复制并粘贴到您的 mrjob.conf
中即可。
关于python - 使用 python MRJob 在 EMR 上引导库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23440564/
我尝试从 mrjob 中的映射器输出 python 集。我相应地更改了组合器和 reducer 的函数签名。 但是,我收到此错误: Counters From Step 1 Unencodable o
默认情况下,mrJob 以 key[tab] 输出格式存储输出中的键和值。 即使键(或值)为空、null 或其他不感兴趣的情况,也会发生这种情况。假设我的键值对是 None, {"a":1", "b"
我正在尝试更好地理解 mrjob 的示例 from mrjob.job import MRJob class MRWordFrequencyCount(MRJob): def mapper(
我正在尝试预处理 XML 文件以在放入 mapreduce 之前提取某些节点。我有以下代码: from mrjob.compat import jobconf_from_env from mrjob.
我正在使用 cloudera 虚拟机。这是我的文件结构: [cloudera@quickstart pydoop]$ hdfs dfs -ls -R /input drwxr-xr-x - clo
显示多步 map reduce 作业执行时间的最佳方式是什么? 我试图在工作的step1 的mapper init 中设置一个self 变量 def mapper_init_timer(sel
我正在尝试学习将 Yelp 的 Python API 用于 MapReduce、MRJob。他们的简单单词计数器示例很有意义,但我很好奇人们将如何处理涉及多个输入的应用程序。例如,不是简单地计算文档中
如何在 mrjob 的 reducer 或映射器中放置调试语句(如打印)。如果我尝试使用 print 或 sys.stderr.write(),我会收到一个错误 TypeError: a bytes-
我使用 hadoop 流式传输的 mrjob 失败。我在 oracle vm 上有一个带有 python 模块 mrjob 的 hadoop 沙箱。 需要按照 Hadoop Error: Error
我是 map reduce 的新手,我正在尝试使用 mrjob 运行 map reduce 作业python包。但是,我遇到了这个错误: ERROR:mrjob.launch:Step 1 of 1
如果我对 MRJob 的理解正确,你可以通过运行 MRJob 来模拟 hadoop 的多进程运行 python mrfile.py -r local input.txt 我正在运行 Windows(现
我一直在尝试修改给定的 mapper_pre_filter 示例 here .现在,如果我不直接在步骤中指定命令,而是编写一个返回该命令的方法,如下所示: from mrjob.job import
我正在尝试在 EMR 集群中运行示例 mrjob。我已在 AWS 仪表板中手动创建 EMR 集群并启动 mrjob,如下所示 python keywords.py -r emr s3://common
我正在尝试通过三个步骤来实现映射缩减作业,并且在每个步骤之后我都需要迄今为止所有步骤的数据。有谁有关于如何在 mrjob 中将映射器或 reducer 的结果保存到磁盘的示例/想法? 最佳答案 您可以
我对 Map/Reduce 原理和 python mrjob 框架还很陌生,我写了这个示例代码,它工作正常,但我想知道我可以改变它什么以使其“完美”/更高效. from mrjob.job impor
我正在使用 MrJob 编写 hadoop 应用程序。我需要使用分布式缓存来访问一些文件。我知道 hadoop 流中有一个选项 -files 但不知道如何在程序中访问它。 感谢您的帮助。 最佳答案 我
我正在使用 mrjob 处理一批文件并获取一些统计信息。我知道我可以在单个文件上运行 mapreduce 作业,例如 python count.py output 但是我怎样才能将文件目录提供给脚本
有没有办法使用mrjob对reducer函数的输出进行排序? 我认为 reducer 函数的输入是按键排序的,我尝试利用此功能使用另一个 reducer 对输出进行排序,如下所示,我知道值具有数值,我
场景是我需要处理一个文件(输入),对于每条记录,我需要检查输入文件中的某些字段是否与存储在 Hadoop 集群中的字段匹配。 我们正在考虑使用 MRJob 处理输入文件并使用 HIVE 从 hadoo
我想这样索引化简的结果: 1 "EZmocAborM6z66rTzeZxzQ" 2 "FIk4lQQu1eTe2EpzQ4xhBA" 3 "myql3o3x22_ygECb8gVo7A"
我是一名优秀的程序员,十分优秀!