要学习程序员思维,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")