我目前正在研究Apache spark。我想看看系统在文本文件上执行wordcount并将其存储在文件中所花费的时间。我需要使用bash脚本自动执行命令。我试着运行以下脚本: -
start-all.sh
(time spark-shell
val inputfile = sc.textFile("/home/pi/Desktop/dataset/books_50.txt")
val counts = inputfile.flatMap(line => line.split(" ")).map(word => (word,1)).reduceByKey(_+_);
counts.toDebugString
counts.cache()
counts.saveAsTextFile("output")
exit()
) 2> /home/pi/Desktop/spark_output/test.txt
stop-all.sh
它显示以下错误: -
./wordcount_spark.sh: line 4: syntax error near unexpected token `('
./wordcount_spark.sh: line 4: ` val inputfile = sc.textFile("/home/pi/Desktop/dataset/books_50.txt")'
我尝试将EOF添加到代码中,我收到以下错误: -
./wordcount_spark.sh: line 12: warning: here-document at line 3 delimited by end-of-file (wanted `EOF')
./wordcount_spark.sh: line 13: syntax error: unexpected end of file
我不了解如何通过bash脚本传递scala命令
答案 0 :(得分:0)
Spark-shell是一个交互式工具,用户可以通过一个接一个地输入一个命令来交互使用,因此它不适合您的需求。
您应该查看Spark的快速入门指南中的Self-Contained Applications部分,该部分指导您如何编写和构建简单的Scala应用程序,并使用 {{1}执行它} 即可。这应该更符合你的要求。