安装 java
运行命令 sudo apt install openjdk-8-jdk-headless
进行安装
运行java -version
测试安装是否成功,结果如下,安装成功
安装Spark
运行wget http://mirror.bit.edu.cn/apache/spark/spark-2.4.5/spark-2.4.5-bin-hadoop2.7.tgz
下载spark
运行tar -xzvf spark-2.4.5-bin-hadoop2.7.tgz
解压缩
运行cd spark-2.3.0-bin-hadoop2.7
进入解压出来的文件目录
运行./bin/run-example SparkPi 10
测试安装是否成功。
结果如下,成功计算出了圆周率。
计算Top N
创建 1到100由空格分开的文本文件
echo {1..100} > /home/ehpc/number.txt
运行spark-shell
./bin/spark-shell
//读取计算 Top N 的文件
val textFile = sc.textFile("/home/ehpc/number.txt")
//按空格分割数值
val nums = textFile.flatMap(line => line.split(" "))
//将数值映射为key-val结构
val nums_map= nums.map(x => (x.toInt, null))
//对数值进行排序
val sorted_nums_map = nums_map.sortByKey(false)
//取出前10个数值
val top_10 = sorted_nums.take(10)
//打印最大的10个数值
top_10.foreach(println)
Word count
//读入统计单词数的文件
val textFile = sc.textFile("README.md")
//按空格分割单词
val words = textFile.flatMap(line => line.split(" "))
//将单词映射为key-val结构,单词是key,val是1
val ones = words.map(w => (w, 1))
//统计单词出现次数,就是把key相同的value加起来
val counts = ones.reduceByKey(_ + _)
//打印统计结果
counts.foreach(println)
RDD编程
//创建有3个分区的RDD,rdd的数据为1-5的整数,查看rdd中的数据
val rdd = sc.makeRDD(1 to 5, 3)
rdd.collect
//用map(func)函数把rdd中的每个数据乘2并查看结果
rdd.map(_ * 2).collect
//用flatMap(func)函数把rdd中的每个整数映射到一个从1开始到该整数的数组,最后把这些数组拼接在一起。显示rdd1的内容
val rdd1 = rdd.flatMap(x => (1 to x))
rdd1.collect
//用union(ortherDataset)函数把rdd和rdd1的内容合并并查看结果
rdd.union(rdd1).collect
//用intersection(otherDataset)函数求rdd和rdd1的交集并查看结果
rdd1.intersection(rdd).collect
//first:返回rdd中第1个元素
rdd.first
//count:统计rdd中元素个数
rdd.count
//用reduce函数分别对rdd中的数据进行累加和累乘
rdd.reduce( _ + _)
rdd.reduce(_ * _)
//用top(n)函数返回rdd中最大的三个数
rdd.top(3)