在我們的一個管道中,我們使用spark(java)進行聚合,並使用oozie進行編排。 該流水線使用以下幾行將聚合數據寫入ORC文件。在oozie中使用hive上下文失敗的Spark作業
HiveContext hc = new HiveContext(sc);
DataFrame modifiedFrame = hc.createDataFrame(aggregateddatainrdd, schema);
modifiedFrame.write().format("org.apache.spark.sql.hive.orc").partitionBy("partition_column_name").save(output);
當Oozie的工作火花動作被觸發,它拋出以下異常
Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.SparkMain], main() threw exception, org.apache.hadoop.hive.shims.HadoopShims.isSecurityEnabled()Z java.lang.NoSuchMethodError: org.apache.hadoop.hive.shims.HadoopShims.isSecurityEnabled()Z
但多次重新運行工作流程後,同樣是越來越成功。
所有必需的jar都在運行時和編譯期都有。
這是我的第一個火花應用程序,我無法理解這個問題。
有人可以幫助我更好地理解問題和可能的解決方案。
謝謝Samson你提到的是有道理的,我已經開始在這個方向上進行調試,但是我有一個懷疑在紗線日誌中,我可以看到關於類路徑的兩件事情之一是java.class.path在頂部和其他的是ClassPath元素,哪一個會被spark加載? –
它們應該匹配 - 都是Oozie啓動器類的調試跟蹤。 –
謝謝samson!有jar的執行順序導致了這個問題,我用oozie.launcher.mapreduce.user.classpath.first來設置優先順序。 –