- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我一直在尝试修改给定的 mapper_pre_filter
示例 here .现在,如果我不直接在步骤中指定命令,而是编写一个返回该命令的方法,如下所示:
from mrjob.job import MRJob
from mrjob.protocol import JSONValueProtocol
class KittiesJob(MRJob):
OUTPUT_PROTOCOL = JSONValueProtocol
def filter_input(self):
return ''' grep 'kitty' '''
def test_for_kitty(self, _, value):
yield None, 0 # make sure we have some output
if 'kitty' in value:
yield None, 1
def sum_missing_kitties(self, _, values):
yield None, sum(values)
def steps(self):
return [
self.mr(mapper_pre_filter=self.filter_input,
mapper=self.test_for_kitty,
reducer=self.sum_missing_kitties)]
if __name__ == '__main__':
KittiesJob().run()
我收到以下异常:
Exception: error getting step information:
Traceback (most recent call last):
File "/Users/sverma/work/mrjob/filter_input.py", line 30, in <module>
KittiesJob().run()
File "/Library/Python/2.7/site-packages/mrjob/job.py", line 494, in run
mr_job.execute()
File "/Library/Python/2.7/site-packages/mrjob/job.py", line 500, in execute
self.show_steps()
File "/Library/Python/2.7/site-packages/mrjob/job.py", line 677, in show_steps
print >> self.stdout, json.dumps(self._steps_desc())
File "/Library/Python/2.7/site-packages/simplejson/__init__.py", line 370, in dumps
return _default_encoder.encode(obj)
File "/Library/Python/2.7/site-packages/simplejson/encoder.py", line 269, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/Library/Python/2.7/site-packages/simplejson/encoder.py", line 348, in iterencode
return _iterencode(o, 0)
File "/Library/Python/2.7/site-packages/simplejson/encoder.py", line 246, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <bound method KittiesJob.filter_input of <__main__.KittiesJob object at 0x10449ac90>> is not JSON serializable
谁能解释一下我做错了什么?
最佳答案
哇,这么晚的回答。我想你想改变这个:mapper_pre_filter=self.filter_input,
到mapper_pre_filter=self.filter_input(),
。
在示例中,mapper_pre_filter
应该是一个字符串,而不是一个函数。也许将来会对某人有所帮助。
堆栈跟踪表明过滤器的输出不是 JSON 可序列化的,因为它可能是空的。
关于python - MRJob 中的 mapper_pre_filter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28428173/
我尝试从 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"
我是一名优秀的程序员,十分优秀!