CentOS下Zeppelin中R的配置教程
CentOS下Zeppelin中R的配置教程
- 前言
- 步驟
- 問題排除
- 參考連結
前言
使用CentOS下安裝Zeppelin中的步驟安裝完Zeppelin後,就可以直接在上面進行Spark程式設計。
但是如果想要在上面執行R的程式,則還需要另外配置。
本篇參考了
步驟
在CentOS下安裝R
yum install -y R R-devel libcurl-devel openssl-devel
安裝完成後可以用:
R -e "print(1+1)"
來驗證安裝是否成功,以下是預期輸出:
R version 3.5.1 (2018-07-02) – “Feather Spray”
Copyright © 2018 The R Foundation for Statistical Computing
Platform: x86_64-redhat-linux-gnu (64-bit)R ist freie Software und kommt OHNE JEGLICHE GARANTIE.
Sie sind eingeladen, es unter bestimmten Bedingungen weiter zu verbreiten.
Tippen Sie ‘license()’ or ‘licence()’ für Details dazu.R ist ein Gemeinschaftsprojekt mit vielen Beitragenden.
Tippen Sie ‘contributors()’ für mehr Information und ‘citation()’,
um zu erfahren, wie R oder R packages in Publikationen zitiert werden können.Tippen Sie ‘demo()’ für einige Demos, ‘help()’ für on-line Hilfe, oder
‘help.start()’ für eine HTML Browserschnittstelle zur Hilfe.
Tippen Sie ‘q()’, um R zu verlassen.print(1+1)
[1] 2
重啟Spark interpreter
可以參考如何除Zeppelin的錯?這篇教學來重啟Spark interpreter。
問題排除
sparkr is not responding
如果還沒在環境中安裝好R,就直接執行筆記本中有%R
的paragraph,則會出現以下錯誤:
org.apache.zeppelin.interpreter.InterpreterException: sparkr is not responding
at org.apache.zeppelin.spark.ZeppelinR.waitForRScriptInitialized(ZeppelinR.java:294)
at org.apache.zeppelin.spark.ZeppelinR.request(ZeppelinR.java:236)
at org.apache.zeppelin.spark.ZeppelinR.eval(ZeppelinR.java:185)
at org.apache.zeppelin.spark.ZeppelinR.open(ZeppelinR.java:174)
at org.apache.zeppelin.spark.SparkRInterpreter.open(SparkRInterpreter.java:106)
at org.apache.zeppelin.interpreter.LazyOpenInterpreter.open(LazyOpenInterpreter.java:69)
at org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer$InterpretJob.jobRun(RemoteInterpreterServer.java:617)
at org.apache.zeppelin.scheduler.Job.run(Job.java:188)
at org.apache.zeppelin.scheduler.FIFOScheduler$1.run(FIFOScheduler.java:140)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Error in library(knitr) : there is no package called ‘knitr’
如果R安裝完成,重啟spark interpreter執行%R
的paragraph,可能會碰到以下錯誤:
java.lang.RuntimeException: Error in library(“knitr”): es gibt kein Paket namens ‘knitr’
at org.apache.zeppelin.spark.ZeppelinR.request(ZeppelinR.java:259)
at org.apache.zeppelin.spark.ZeppelinR.eval(ZeppelinR.java:185)
at org.apache.zeppelin.spark.SparkRInterpreter.open(SparkRInterpreter.java:112)
at org.apache.zeppelin.interpreter.LazyOpenInterpreter.open(LazyOpenInterpreter.java:69)
at org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer$InterpretJob.jobRun(RemoteInterpreterServer.java:617)
at org.apache.zeppelin.scheduler.Job.run(Job.java:188)
at org.apache.zeppelin.scheduler.FIFOScheduler$1.run(FIFOScheduler.java:140)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
解法一:安裝knitr包
這時候可以在命令列輸入以下指令來安裝knitr包:
R -e "install.packages('knitr', repos = 'http://cran.us.r-project.org')"
安裝完成後再重啟spark interpreter,便可成功執行該paragraph。
解法二:禁用knitr
修改spark interpreter設定中的zeppelin.R.knitr這個欄位,將原來的true改為false。
參考連結
CentOS下安裝Zeppelin
R Interpreter for Apache Zeppelin
如何除Zeppelin的錯?