2

コンテキスト: Amazon EMR で実行する Cascalog ジョブを作成しています。Cascalog は、MapReduce を実行するための clojure ベースの lib です。奇妙なクラスローディング例外が原因でジョブが失敗した場合。

この仕事では、clojure ベースの geoip ルックアップ ライブラリである geocoder というライブラリを使用しています。特に、maxmind GeoLiteCity.dat ファイルを参照するライブラリの一部を使用していました。ジョブの失敗の原因となったコードの部分は、ジオコーダー lib.** を使用する部分であることがわかりました。

最も奇妙なことは、コードのこの部分を削除するとジョブが成功する一方で、コメントアウトすると成功しないということです...何が起こっているのか誰かが知っているかどうか疑問に思っていますか?

** 私がジオコーダ lib を使用した方法

(ns utils.geoip (:use [geocoder.core]))

そして、私の仕事は上記を必要とします

(ns myjob (:require [utils.geoip :as geoip]))

4

1 に答える 1

1

あなたの質問への答えは、問題のあるコードをコメントアウトするために使用している手法に依存する可能性がありますか? つまり、;または複数行(comment foo)マクロを使用していますか?

私が尋ねる理由は、コメントアウトされたコード;は完全に無視されますが、commentマクロは構文的に正しい S 式を本体として必要とするためです。そのため、単純な構文エラーが、無視されていると思われるコードで予期しないエラーを引き起こしている可能性があります。

別の言い方をすると、コメント マクロは任意のテキストを許可しません。

于 2012-05-18T15:01:57.340 に答える