2016-09-08 19 views
2

親愛的社區!在我描述的問題,這裏的軟件中使用的簡短描述(其中後兩個在三個節點的小集羣中運行,他們每個人的使用的Ubuntu 14.04):在Ubuntu上以紗線客戶端模式在Spark上載入Zeppelin的外部依賴關係14.04

  • 齊柏林0.6。 1
  • 火花2.0.0Scala的2.11.8
  • 的Hadoop 2.7.3
沿

的情況如下:爲了使用TwitterUtils類寫成齊柏林音符星火流應用程序,我需要包括從Maven的org.apache.spark.streaming.twitter._org.apache.bahir:spark-streaming-twitter_2.11:2.0.0-preview)。我瞭解到,到目前爲止是,有一對夫婦的選擇,使外部依賴提供飛艇:

  • 導出SPARK_SUBMIT_OPTIONS在的conf/zeppelin-env.sh變量,並設置--jars (在我的情況下,--jars hdfs:// admdsmaster:54310/global/jars/spark-streaming-twitter_2.11-2.0.0-preview.jar(指向本地文件系統的路徑也經過測試))。
  • 出口SPARK_SUBMIT_OPTIONS並設置--packages(在我的情況--packages org.apache.bahir:火花流-twitter_2.11:2.0.0預覽)。
  • 設置spark.jarsspark.jars.packagesCONF /火花defaults.conf與上述的值。
  • 使用%DEP解釋在飛艇本身就像這樣:z.load( 「org.apache.bahir:火花流-twitter_2.11:2.0.0預覽」)。儘管這已被棄用。
  • 在Zeppelin說明中使用sc.addJar()手動添加.jar文件。

嘗試過所有上述的後 - 和幾乎任意的組合和它們的變體 - 的問題是,我仍然不能從齊柏林音符內導入TwitterUtils類:

Class import failing in Zeppelin note.

從圖片中還可以看到sc.listJars()的輸出結果,它顯示實際包含.jar文件。儘管如此,課程導入仍然失敗。

我的第一個想法是,問題的發生是因爲Spark運行在yarn-client模式下,所以我在yarn-client模式下啓動了Spark shell,並試圖從那裏導入類 - 它工作正常:

Class import working from Spark shell.

爲了找出發生了什麼事情,我搜索飛艇,Spark和紗線的日誌文件,但找不到任何錯誤消息指出我的問題的原因。

長話短說:雖然jar文件被列入齊柏林飛艇(由sc.listJars()作爲證明),雖然從火花殼紗客戶端模式的類進口的作品,我只是從我的齊柏林鈔票中得不到進口。

長故事更短:我真的很感謝你的想法如何解決這個問題!

在此先感謝您的時間和精力。

P.S .:很抱歉,我無法直接將圖像上傳到這個帖子 - 它說我至少需要10個聲望點,這是我沒有的,因爲這是我第一次在這裏發佈。

+0

您是否嘗試從解釋器選項卡添加它們? – eliasah

回答

0

從@eliasah提出的解釋器選項卡中添加依賴項實際上有訣竅 - 非常感謝你!

爲研究員在那裏誰可能運行到同樣的問題,我將非常簡短描述的解決方案,並添加了如何sc.listJars()呼叫實際上應該看起來像一個圖片(比較到原始問題中的圖片)。

頭以上Zeppelin的解釋選項卡,向下滾動或搜索火花解釋,然後打編輯。在可用設置的最底部有一個依賴關係部分。在這裏添加你的依賴(通過指定Maven座標,例如,我的例子org.apache.bahir:spark-streaming-twitter_2.11:2.0.0-preview)並保存設置。重新啓動解釋器後,依賴關係應該可用。

下面是一個電話sc.listJars()看起來像我的情況已經執行上述步驟後:

Call to sc.listJars().

如果這個畫面比較原的第一個問題,你會注意到列表現在包含更多條目。不過,我仍然在想,爲什麼只有包含它的.jar文件存在時,類導入才起作用。無論如何,由於@eliasah解決了問題 - 再次感謝,你應該得到一個餅乾! - 我希望這個簡短的描述也能幫助其他人。