context:我正在编写Cascalog作业以在Amazon EMR中运行。 Cascalog是一个基于clojure的lib,用于运行MapReduce。由于一些奇怪的类加载异常而导致作业失败。
在作业中,我使用了一个名为geocoder的lib,它是一个基于clojure的geoip查找库。特别是我使用的是查看maxmind GeoLiteCity.dat文件的lib部分。我发现导致作业失败的代码部分是使用地理编码器库的部分。**
最奇怪的是,虽然删除这部分代码会导致作业成功,但评论却不会......只是想知道是否有人知道发生了什么事?
** 我使用geocoder lib的方式如此
(ns utils.geoip(:使用[geocoder.core]))
然后我的工作需要上面的
(ns myjob(:require [utils.geoip:as geoip]))
答案 0 :(得分:1)
您的问题的答案可能取决于您使用哪种技术来评论违规代码?即,您使用的是;
还是多行(comment foo)
宏?
我问的原因是虽然用;
注释掉的代码被完全忽略,但comment
宏需要一个语法正确的S表达式作为正文;因此,一个简单的语法错误可能会导致您认为被忽略的代码中的意外错误。
换句话说:评论宏不允许任意文本。