ruby – 错误:运行elastic-mapreduce指定分布式缓存文件时,Stri
我有以下错误:
Error: undefined method `each' for "s3n://dico-count-words/Cache/dicoClazz.p#dicoClazzCache.p":String 当我运行以下命令行以通过elastic-mapreduce在Amazon EMR集群上启动mapreduce算法时,指定分布式缓存文件: ./elastic-mapreduce --create --stream > --input s3n://dico-count-words/Words > --output s3n://dico-count-words/Output > --mapper s3n://dico-count-words/Code/mapper.py > --reducer s3n://dico-count-words/Code/reducer.py > --log-uri s3n://dico-count-words/Logs > --cache s3n://dico-count-words/Cache/dicoClazz.p#dicoClazz.p 我按照我发现的指示here. ruby 2.0.0p451 (2014-02-24 revision 45167) [universal.x86_64-darwin13] 您对该错误的来源有何看法?有什么建议可以解决吗? 非常感谢. 解决方法
每个都不适用于ruby String类.
作为一个例子,让我们看看以下内容: x = "test" x.each {|character| puts character} >>>NoMethodError: undefined method `each' for "test":String 这就是您在代码中看到的内容,这是可以预期的.在终端中打开irb并尝试以下操作: 2.0.0-p247 :001 > x = "test" 2.0.0-p247 :002 > x.each <now hit tab twice> 2.0.0-p247 :003 > x.each_ x.each_byte x.each_char x.each_codepoint x.each_line 你应该看到接近上面的东西.我碰巧使用ruby 2.0.0-p247.您的版本可能有所不同 irb支持自动完成.在这里,我们开始键入每个,irb根据每个开头的可用选项提出建议.正如你所看到的,只是简单地说每个都不是一个选项.相反,将字符串视为一个字符数组.那就是“测试”可以被认为是像[“t”,“e”,“s”,“t”].鉴于这种表示,很明显x.each_char会做什么 – 它会产生字符串中的每个字符.从而: x.each_char {|c| puts c} 当然会打印字符串的每个字符. 如果我们可以看到一些代码和数据通过它,那么为您建议一个解决方案会更容易.但是,上面的解释是您在String上调用.each时抛出错误的原因. 我希望这是有帮助的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |