我目前正在Apache spark上工作。我希望看到系统对文本文件执行单词计数并将其存储在文件中所花费的时间。我需要用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命令
Spark-shell是一个交互式工具,意味着用户一个接一个地键入命令来交互使用,所以它不适合您的需求。
你应该看看Spark的快速入门指南中的自包含应用程序部分-它指导你如何编写和构建一个简单的Scala应用程序,并使用 spark-submit
执行它。那应该更符合你的要求。