我想使用狐猴+ clojure運行一些多步驟的工作。Clojure +狐猴
我有問題將多個輸入作爲參數傳遞給clojure +狐猴。
至於我的工作,我嘗試運行EMR流工作
狐猴運行$ {} CONF_DIR /run-pipeline.clj --master實例類型$ {} MASTER_INSTANCE_TYPE --slave-實例 - 第一步鍵入$ {SLAVE_INSTANCE_TYPE} --num-instances $ {NUM_INSTANCES} --ami-version $ {AMI_VERSION} --hadoop-version $ {HADOOP_VERSION} - bucket $ {BUCKET} --jar-src-path $ {CONF_DIR} /run-pipeline.clj --input_folder「$ {input_folder}」--output-folder「$ {output_folder}」--reduce-tasks「$ {REDUCE_TASKS}」--map-tasks「$ {MAP_TASKS}」
單輸入文件我的代碼看起來像這樣
(import com.amazonaws.services.elasticmapreduce.util.StepFactory)
(import com.amazonaws.services.elasticmapreduce.model.StepConfig)
(import com.amazonaws.services.elasticmapreduce.util.StreamingStep)
(defn create-step-parsing [eopts]
(def step (new StreamingStep))
(.withInputs step (into-array [(str (:input-folder eopts) "/inputs/*")]))
...
這工作得很好,但是當我試圖通過輸入文件,我得到錯誤的列表
狐猴運行$ {} CONF_DIR /run-pipeline.clj --master實例類型$ {} MASTER_INSTANCE_TYPE - slave-instance-type $ {SLAVE_INSTANCE_TYPE} --num-instances $ {NUM_INSTANCES} --ami-version $ {AMI_VERSION} --hadoop-version $ {HADOOP_VERSION} - bucket $ {BUCKET} --jar-src-path $ {input_folder1}「--input_folder」$ {input_folder1}「--input_folder」$ {input_folder2}「--input_folder」$ {input_folder3}「--input_folder」$ {input_folder}「--output-文件夾「$ {output_folder}」--reduce-tasks「$ {REDUCE_TASKS}」--map-tasks「$ {MAP_TASKS}」
(defn create-normalizer-step [eopts]
(def step (new StreamingStep))
(.withInputs step (to-array (:input-folder eopts)))
這是錯誤我得到
15:44:05 Exception in thread "main" java.lang.ClassCastException
15:44:05 at java.lang.Class.cast(Class.java:2990)
15:44:05 at clojure.lang.Reflector.boxArg(Reflector.java:429)
15:44:05 at clojure.lang.Reflector.boxArgs(Reflector.java:462)
15:44:05 at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:57)
15:44:05 at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:30)
15:44:05 at run_pipeline17$create_normalizer_step.invoke(run-pipeline.clj:18)
15:44:05 at run_pipeline17$run_pipeline.invoke(run-pipeline.clj:209)
15:44:05 at lemur.core$fire_BANG_.doInvoke(core.clj:711)
15:44:05 at clojure.lang.RestFn.invoke(RestFn.java:423)
15:44:05 at run_pipeline17$eval178.invoke(run-pipeline.clj:222)
15:44:05 at clojure.lang.Compiler.eval(Compiler.java:6465)
15:44:05 at clojure.lang.Compiler.load(Compiler.java:6902)
15:44:05 at clojure.lang.Compiler.loadFile(Compiler.java:6863)
15:44:05 at clojure.lang.RT$3.invoke(RT.java:305)
15:44:05 at lemur.core$execute_jobdef.invoke(core.clj:742)
15:44:05 at lemur.core$_main$fn__1388.invoke(core.clj:929)
15:44:05 at lemur.core$_main.doInvoke(core.clj:924)
15:44:05 at clojure.lang.RestFn.applyTo(RestFn.java:137)
15:44:05 at lemur.core.main(Unknown Source)
我添加的代碼是從線17至19行
感謝
你還在試圖解決這個問題嗎? – Virmundi