学习:
http://spark.apache.org
https://github.com/apache/spark
源码
bin目录下:./spark-shell
启动后,默认日志级别是warn,我们进入到自定义编译的spark包中vi log4j.properties
修改,log4j.rootCategory = INFO,console
SparkContext:应用程序的入口。
打开WebUI,进入到4040端口下,右上角有一个spark-shell,默认名字是Application UI,一个机器上可以会同时启动或运行多个Spark程序,端口会自增,一个应用程序跑在哪个端口上,通过查看日志得知。
sc => SparkContext
master = local[*]
设置Spark用用程序运行在哪里,以什么方式运行。
spark://host:port Standalone
mesos://host:port
yarn Hadoop YARN
K8s
在deploying -->submitting Appications
在启动页面,local[],单个local无任何并行度可言,local[K],
local[]:Run Spark locally with as many worker threads as logical cores on your machine
翻译:机器有多少个core,就有多少个线程
app id,对应的web UI界面是在Environment下体现
SparkSession:初步理解为一个框,里面可以取很多东西
问题:Spark Shell这个名字是在哪里来的呢?
cd bin
cat spark-shell
spark-shell底层调用的是spark-submit --name “spark-shell” 通过这个脚本设置进来的。
使用spark来实现一个wordcount
在scala中进行操作:
val file = sc.textFile(“file://home/hadoop/data/ruozeinput.txt”)
file.flatMap(.split("\t")).map(,1)
file.flatMap(.split("\t")).map(,1).reduceByKey(+)
按照Key的字典顺序进行排列的。
进行降序排列
result.map(x => (x.2,x.1)) //对元素进行对调
val result = file.flatMap(.split("\t"))
.map(,1)
.reduceByKey(+)
.sortByKey(false)
.map(x._2,x._1)