原Linux实验网址:http://dblab.xmu.edu.cn/blog/1757-2/

实验一: spark的基础使用

1.数据载入部分

在本地 (可以是虚拟机,也可以是真实操作系统,需要在包含spark-hadoop的环境下) 创建一个文本peopleinfo.txt

1 F 170

2 M 178

3 M 174

4 F 165

将该文件上传到hadoop的文件系统hdfs中

sklsde@ubuntu:~$ hdfs dfs -put peopleinfo.txt /【Linux命令】

hdfs dfs -put D:\Spark\peopleinfo.txt /【win10命令,指定文件位置】

[请在此处贴出你的结果]

2.数据计算部分

编写Spark应用程序,该程序对HDFS文件中的数据文件peopleinfo.txt进行统计,计算得到:

  • 男性总数
  • 女性总数
  • 男性最高身高
  • 女性最高身高
  • 男性最低身高
  • 女性最低身高。

spark可以使用 spark-submit 或者 spark-shell 两种方式访问。

[请仿照上面的例子计算女性的对等信息,并在此处贴出你的例子]

spark-shell的访问:

 

 

实验二: spark-submit 的使用

 ${SPARK-HOME}/examples/jars 目录下有一个打包好的 jar, 使用 spark-commit命令将该jar提交给spark-master,任务将被自动运行,这也是spark在大多数情况下的使用方式.

运行如下类似命令:【要在spark-2.3.0-bin-hadoop2.6\examples目录下运行,否则报错java.lang.ClassNotFoundException: org.apache.spark.examples.SparkPi】

spark-submit --class org.apache.spark.examples.SparkPi --master spark://192.168.188.1:7077 spark-examples_2.11-2.3.0.jar【Linux和win10一样】

[运行完如上之后,spark master ui会出现变化,一般来说会出现一个 Spark Pi 的 Completed Applications 点开他,在这里展示其所展示的内容]

实验三: 统计微博信息

在本地创建一个文件 weiboinfo.txt,并将它上传到 hdfs 中

11111111 12743457

11111111 16386587

11111111 19764388

11111111 12364375

11111111 13426275

11111111 12356363

11111111 13256236

11111111 10000032

11111111 10000001

11111111 10000001

11111111 10000001

11111112 12743457

其中,第1列和第2列都是表示用户ID,表中的数据是表示第1列的用户关注了第2列用户

本实验需要完成下列任务:

  • (1) 请统计出一共有多少个不同的ID
  • (2) 统计出一共有多少个不同的(ID,ID)对
  • (3) 统计出每个用户的粉丝数量
  • (1) 统计出每个用户的粉丝数量,并且把统计结果写入到HDFS文件follows.txt

创建一个工作目录,在其中创建一个 build.sbt

name := "spark weibo project"

version := "1.0"

scalaVersion := "2.11.12"

libraryDependencies += "org.apache.spark" %% "spark-core" % "3.0.0"

在原地执行命令: sbt

在工作环境下创建源码文件 /src/main/scala/SparkWeibo.scala

import org.apache.spark.SparkConf

import org.apache.spark.SparkContext

object SparkWeibo{

  def main(args:Array[String]){

    val conf = new SparkConf().setAppName("Weibo info")

    val sc = new SparkContext(conf)

    val records = sc.textFile("hdfs://192.168.154.129:9999/weibo.txt")

    records.collect().foreach(println)

/**

* 剩余部分请使用自己的逻辑完成本实验的四个任务

*/

  }

}

 

[可以用命令行输出print的方式一起完成任务(1)(2)(3),贴图关键部分]

 

[展示 hdfs webui 中存在用户粉丝数文件 /follows.txt ]

 

[通过命令行,调用hdfs中的一个命令将follows.txt拉回本地,并展示其内容]

 

类似

 

问答区:

1.同样是执行spark程序,为什么只有`spark-submit --master...`显示在了spark master ui 中,而run-example或者spark-shell却都没有显示在其中呢?

 

2.写出本实验从头到尾使用到的rdd算子

 

3.除了本实验中使用过的rdd算子,请在列举3-5个其他的rdd算子,并解释其功能和含义

 

posted on 2020-07-14 12:16  西伯尔  阅读(790)  评论(0编辑  收藏  举报