2017-03-27 48 views
4

我在emr-5.4.0羣集上運行zeppelin 0.7.0。我使用默認設置啓動羣集。 EMR不配置%spark.dep解釋器。EMR Zeppelin消除DepInterpreter

我從下面編輯的文件/etc/zeppelin/conf/interpreter.json

"2ANGGHHMQ": { 
    "id": "2ANGGHHMQ", 
    "name": "spark", 
    "group": "spark", 
    "properties": { 
    "spark.yarn.jar": "", 
    "zeppelin.spark.printREPLOutput": "true", 
    "master": "yarn-client", 
    "zeppelin.spark.maxResult": "1000", 
    "spark.app.name": "Zeppelin", 
    "zeppelin.spark.useHiveContext": "true", 
    "args": "", 
    "spark.home": "/usr/lib/spark", 
    "zeppelin.spark.concurrentSQL": "false", 
    "zeppelin.spark.importImplicit": "true", 
    "zeppelin.pyspark.python": "python", 
    "zeppelin.dep.localrepo":"/usr/lib/zeppelin/local-repo" 
    }, 
    "interpreterGroup": [ 
    { 
     "class": "org.apache.zeppelin.spark.SparkInterpreter", 
     "name": "spark" 
    }, 
    { 
     "class": "org.apache.zeppelin.spark.PySparkInterpreter", 
     "name": "pyspark" 
    }, 
    { 
     "class": "org.apache.zeppelin.spark.SparkSqlInterpreter", 
     "name": "sql" 
    } 
    ], 
    "option": { 
    "remote": true, 
    "port": -1, 
    "perNoteSession": false, 
    "perNoteProcess": false, 
    "isExistingProcess": false 
    } 
} 

我必須手動添加以下內容並重新啓動飛艇:

{ 
    "class":"org.apache.zeppelin.spark.DepInterpreter", 
    "name": "dep" 
} 

有沒有一種方法,使電子病歷使用默認的飛艇設置(而不是刪除這個配置)?

UPDATE

可能有人也解釋了爲什麼我剛剛創建了今天上午集羣,通過克隆原始羣集,有着完全不同的配置?

"interpreterGroup": [ 
    { 
     "name": "spark", 
     "class": "org.apache.zeppelin.spark.SparkInterpreter", 
     "defaultInterpreter": false, 
     "editor": { 
     "language": "scala", 
     "editOnDblClick": false 
     } 
    }, 
    { 
     "name": "pyspark", 
     "class": "org.apache.zeppelin.spark.PySparkInterpreter", 
     "defaultInterpreter": false, 
     "editor": { 
     "language": "python", 
     "editOnDblClick": false 
     } 
    }, 
    { 
     "name": "sql", 
     "class": "org.apache.zeppelin.spark.SparkSqlInterpreter", 
     "defaultInterpreter": false, 
     "editor": { 
     "language": "sql", 
     "editOnDblClick": false 
     } 
    } 
    ] 
+0

感謝您分享此手動方法。我認爲這是一個重要的監督,這個解釋器不在那裏,我們還可以添加外部軟件包嗎?我不確定AWS如何認爲Zeppelin沒有這種能力將會有用。 – Davos

+0

在這個頁面https://community.hortonworks.com/questions/41537/adding-libraries-to-zeppelin.html有一個建議,你可以使用local.repo來存儲jar文件。我不確定具體的工作方式,無論是依賴項的路徑需要添加到Spark(或其他)解釋器,還是隻需在本地倉庫中添加jar就足以將其導入到代碼中 – Davos

+0

在這裏看到答案https://stackoverflow.com/questions/45328671/configure-zeppelins-spark-interpreter-on-emr-when-starting-a-cluster –

回答

3

根據AWS的規定,克隆羣集只克隆基本配置,而不克隆創建之後所做的更改。此外,EMR中沒有配置API,允許您更改Zeppelin的interpreter.json文件,因此唯一的方法是現在手動更改配置。

齊柏林似乎有一套REST APIs,允許您更改解釋器設置。尤其是this API端點,它允許您創建解釋器設置。然而,這似乎並不具有以下有效載荷的工作:

POSThttp://[zeppelin-server]:[zeppelin-port]/api/interpreter/setting

Payload

{ 
    "name": "dep", 
    "group": "spark", 
    "properties": {}, 
    "interpreterGroup": [ 
    { 
     "class":"org.apache.zeppelin.spark.DepInterpreter", 
     "name": "dep", 
     "defaultInterpreter": true 
    } 
    ], 
    "dependencies": [] 
} 

所以,唯一的選擇就是在此刻手動更改interpreter.json。如果上述端點起作用,您可以將其添加到羣集創建步驟中,如here所述。

+0

運行'curl -vX POST POST HTTP:// localhost:8890/api/interpreter/setting -d @ payload.json - 使用上述有效負載的「Content-Type:application/json」使用EMR集羣。它會以「CREATING」狀態作出響應,並在一分鐘後可用。 – kadrach