shell编程提供对spark api最简单,也是最直接的调用。
支持两种脚本语言:scala、python。
启动shell编程: ./bin/spark-shell.sh
执行顺序是:spark-shell-->spark-submit-->spark-class
spark-shell启动时,最好启动hadoop.
最好启动master、slaves,这样能通过http://localhost:8080 webUI查看
附其它hadoop程序的webUI查看端口号
-
port 8088: cluster and all applications
-
port 50070: Hadoop NameNode
-
port 50090: Secondary NameNode
-
port 50075: DataNode
注意事项:
spark-shell在一次开关机过程中,不能多次启动。
否则,在下次启动时,容易失败。出现比如SparkContext初始化失败、sqlContext失败、sql失败、以及java.net.BindException: 无法指定Service 'sparkDriver' failed。
spark-shell启动时,master、slaves可以不启动。这样spark程序作为一个单进程在本地跑(我的理解)。
spark-shell启动时,hadoop的dfs可以不启动,即jps查看时,看不到namenode、datanode。如果文件地址在dfs上,就需要启动hadoop了。
shell运行例子:val textFile = sc.textFile("file:usr/local/spark/README.md")。能成功。
如果文件在dfs上,命令形如:scala> val textFile = sc.textFile("hdfs://127.0.0.1:9000/user/hadoop/input/invertedIndexFile1.txt")。运行也能成功。
运行玩的结果,可以写入dfs文件,也可写回本地。
写到dfs:scala> counts.saveAsTextFile("hdfs://127.0.0.1:9000/user/hadoop/input/")
写到本地:scala> counts.saveAsTextFile("file:///home/hadoop/111")。注意,111和input是文件夹。
其他知识:
各个webUIt查看端口
参考文章
1、http://spark.apache.org/docs/latest/quick-start.html(官方文档)
2、http://blog.csdn.net/god_wot/article/details/50634975