linux脚本启动spark-shell并执行scala文件

要学习程序员思维,step by step 

1.如果自己平台安装了scala,好办,在shell脚本直接

scala filename.scala args args

2.如果没装scala

1)检查自己hadoop平台安装的spark环境,cd到路径

2)执行./bin/spark-shell是否启动scala

3)在脚本中执行 ./bin/spark-shell -i <filename.scala 是否可以运行(这里可以使用export临时环境变量)

4)如果你要传参,好的,在执行文件前加入

set +o posix 这是为了防止下一句输入<()报错:(语法错误。Ps注意,<和左括号中间没有空格

@1 ./bin/spark-shell -i <(echo 'val = args;args';filename.scala) 这个我试过了,不行,没查出来是什么情况(可以在自己scala代码前述加入 val args = "'$arguments'".split("\\s+") 后面将main函数传入的参数封装起来)

@2 ./bin/spark-shell -i <filename.scala --conf spark.driver.args=("arg1 arg2")

filename.scala中添加

val args = sc.getConf.get("spark.driver.args").split("\\s+")

args:Array[string] = Array(arg1,arg2)

Objectname.main(args(1),args(2))

3.也可以构建项目,构建sbt文件来执行scala

这个部分随便一个scala教程都有,不做赘述

参考地址:

https://www.cnblogs.com/tugeler/p/5265331.html

https://stackoverflow.com/questions/29928999/passing-command-line-arguments-to-spark-shell

最后感谢大神!要学习程序员思维呀!

最新问题:由于文件体积很大,遇到OOM问题,spark内存溢出。需要设置内存参数

./bin/spark-shell -i --driver.memroy 20g <filename.scala --conf spark.driver.args=("arg1 arg2")

程序中加入

val conf = Set("spark.executor.memory", "20g")

猜你喜欢

转载自blog.csdn.net/yushu4772/article/details/81208177