spark打包还是比较复杂的,特别的其中有关R语言的模块。在本章,我就将其中遇到的所有问题为大家一一讲解,为大家提供一点经验。
这里的打包命令是直接从官网中找的,这里我们最后得到的是tgz格式的包。打包的命令是——./dev/make-distribution.sh --name custom-spark --pip --r --tgz -Psparkr -Phadoop-2.7 -Phive -Phive-thriftserver -Pmesos -Pyarn -Pkubernetes
这里我们首先修改make-distribution.sh中MVN="$SPARK_HOME/build/mvn",将其改为自己maven路径。这里我修改为——MVN="/usr/local/maven-3.5.3/bin/mvn"。
报错一:
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.6.0:exec (sparkr-pkg) on project spark-core_2.11: Command execution failed.: Process exited with an error: 1 (Exit value: 1) -> [Help 1]很可能是由于R语言并没有安装,因为我们这里同样报了如下错误:
解决方法:在mac上安装R语言。这里我下载了R-3.6.0.pkg,然后直接安装就好。
报错二:
no knitr found。
解决方法:在R语言的命令行下,也就是/Applications/R.app/Contents/MacOS/下直接执行R,然后在输入框内执行——install.packages("knitr")
报错三:
there is no package called 'stringi'
解决方法:在R的命令行下执行——install.packages('stringi')
报错四:
Using Caret Package but Getting Error in library(e1071)
解决方法:在R命令行下执行install.packages('e1071', dependencies=TRUE)
报错五:
no rmarkdown、testthat
解决方法:在R命令行下执行install.packages('rmarkdown')、install.packages('testthat')
报错六:
调用tools::texi2pdf()是出了错:
解决方法:下载MacTex后安装。然后执行sudo find / -iname texbin,我这里有如下路径
接着,我们需要设置R语言的环境变量。
这里有两种设置环境变量的方法,一种是临时的,也就是会话级别的,另一种是永久的。
关于临时的环境变量设置,在链接——https://www.r-bloggers.com/building-r-packages-missing-path-to-pdflatex/中将的比较详细了,我这里就不赘述了。我们这里需要关注的是永久环境变量的设置。
要设置永久的环境变量,我们需要更改/etc/profile文件,这里我们添加在文件中添加:
export LATEX_HOME=/Library/TeX/texbin
export PATH=$PATH:$LATEX_HOME
执行了source /etc/profile后,我们打开另外一个窗口,在R命令行下执行:
Sys.getenv("PATH") /Library/TeX/texbin
接着执行:Sys.which("pdflatex") ,这里我们发现:
然后,我们再在spark-master/目录下执行:
./dev/make-distribution.sh --name custom-spark --pip --r --tgz -Psparkr -Phadoop-2.7 -Phive -Phive-thriftserver -Pmesos -Pyarn -Pkubernetes
等一段时间,就会发现在根目录下已经打好了包:spark-2.3.0-SNAPSHOT-bin-custom-spark.tgz
到现在为止,我们就打好了spark的tgz包,大家就可以自由地调试了。