1: 在根目录下创建b.txt文件 文件内容如下
[root@hdp-1 ~]# more b.txt hello me hello you hai me
2:进入到Spark的交互页面(spark-shell) 进入到Scala命令下
[root@hdp-1 ~]# apps/spark-2.4.4-bin-hadoop2.7/bin/spark-shell注意:Spark shell (交互式命令行)里面可以写spark程序,方便学习和测试 其也是一个客户端 用于提交spark应用程序 启动spark shell 第一种方式:bin/spark-shell 在hdp-1:8080网页上 无法查到正在运行的任务(Running Applications) 因为这种启动方式没有指定master的地址,用的spark的local模式运行的(模拟的spark集群运行的过程) 第二种方式:bin/spark-shell --master spark://hdp-1:7077 这样制定了master的地址,那么就会将任务提交到集群,开始时sparksubmit(客户端)要连接Master,并申请计算资源(内存和核数),Master进行资源调度(就是让那些Worker启动Excutor),在准备过程中,这些进程都已经创建好了。
3:输入以下查询语句 res2:是查询结果
Spark context available as 'sc'....
Spark session available as 'spark' ------->spark2.0推出的编写SparkSQL代替Spark1.6中的SQLcontext和HiveContext 解除之前对Hive的依赖来实现对数据的加载,转换,处理等工作
sc(spark context)编写spark程序的入口
scala> sc.textFile("/root/b.txt").flatMap(_.split(" ")).map((_,1)).collect res2: Array[(String, Int)] = Array((hello,1), (me,1), (hello,1), (you,1), (hai,1), (me,1), ("",1))sc.textFile(" ")指明读哪儿里的文件
scala> sc.textFile("/root/b.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect res4: Array[(String, Int)] = Array((you,1), ("",1), (hai,1), (hello,2), (me,2))
4:降序排列
scala> sc.textFile("/root/b.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).sortBy(-_._2).collect res5: Array[(String, Int)] = Array((hello,2), (me,2), (you,1), ("",1), (hai,1))