2023/12/26星期二总结

实验7

Spark初级编程实践

 

1.实验目的

1)掌握使用Spark访问本地文件和HDFS文件的方法

2掌握Spark应用程序的编写、编译和运行方法

2.实验平台

1操作系统:Ubuntu18.04(或Ubuntu16.04

2Spark版本:2.4.0

3Hadoop版本:3.1.3

3.实验步骤

1Spark读取文件系统的数据

1)在spark-shell中读取Linux系统本地文件“/home/hadoop/test.txt”,然后统计出文件的行数;

2)在spark-shell中读取HDFS系统文件“/user/hadoop/test.txt”(如果该文件不存在,请先创建),然后,统计出文件的行数;

3)编写独立应用程序(推荐使用Scala语言),读取HDFS系统文件“/user/hadoop/test.txt”(如果该文件不存在,请先创建),然后,统计出文件的行数;通过sbt工具将整个应用程序编译打包成 JAR包,并将生成的JAR包通过 spark-submit 提交到 Spark 中运行命令。

2编写独立应用程序实现数据去重

对于两个输入文件AB,编写Spark独立应用程序(推荐使用Scala语言),对两个文件进行合并,并剔除其中重复的内容,得到一个新文件C。下面是输入文件和输出文件的一个样例,供参考。

输入文件A的样例如下:

20170101    x

20170102    y

20170103    x

20170104    y

20170105    z

20170106    z

输入文件B的样例如下:

20170101    y

20170102    y

20170103    x

20170104    z

20170105    y

根据输入的文件AB合并得到的输出文件C的样例如下:

20170101    x

20170101    y

20170102    y

20170103    x

20170104    y

20170104    z

20170105    y

20170105    z

20170106    z

3编写独立应用程序实现求平均值问题

每个输入文件表示班级学生某个学科的成绩,每行内容由两个字段组成,第一个是学生名字,第二个是学生的成绩;编写Spark独立应用程序求出所有学生的平均成绩,并输出到一个新文件中。下面是输入文件和输出文件的一个样例,供参考。

Algorithm成绩:

小明 92

小红 87

小新 82

小丽 90

Database成绩:

小明 95

小红 81

小新 89

小丽 85

Python成绩:

小明 82

小红 83

小新 94

小丽 91

平均成绩如下:

(小红,83.67)

(小新,88.33)

(小明,89.67)

(小丽,88.67)

4.实验报告

题目:

Spark初级编程实践

姓名

刘儒骏

日期2023/12/23

实验环境:CentOS Linux7  hadoop-3.3.0 IDEA jdk1.8.0 spark 3.1.2 hive3.1.2 hbase2.1.0 zookeeper 3.4.6

实验内容与完成情况:

(一)Spark读取文件系统的数据

(1)在spark-shell中读取Linux系统本地文件“/home/hadoop/test.txt”,然后统计出文件的行数;

2)在spark-shell中读取HDFS系统文件“/user/hadoop/test.txt”(如果该文件不存在,请先创建),然后,统计出文件的行数;

 

(1)编写独立应用程序(推荐使用Scala语言),读取HDFS系统文件“/user/hadoop/test.txt”(如果该文件不存在,请先创建),然后,统计出文件的行数;通过sbt工具将整个应用程序编译打包成 JAR包,并将生成的JAR包通过 spark-submit 提交到 Spark 中运行命令。

下载sbt工具

 

创建应用程序

 

代码:

/* HDFStest.scala */

import org.apache.spark.SparkContext

import org.apache.spark.SparkContext._

import org.apache.spark.SparkConf

 

object HDFStest {

    def main(args: Array[String]) {

        val logFile = "hdfs://node1.itcast.cn:8020/user/root/test.txt"

        val conf = new SparkConf().setAppName("Simple Application")

        val sc = new SparkContext(conf)

        val logData = sc.textFile(logFile, 2)

        val num = logData.count()

        printf("The num of this file is %d\n", num)

    }

}

 

打包成功

 

 

运行结果:

 

 

2,编写独立应用程序实现数据去重

创建文件

 

打包

 

代码:

import org.apache.spark.SparkContext

import org.apache.spark.SparkContext._

import org.apache.spark.SparkConf

import org.apache.spark.HashPartitioner

 

object RemDup {

    def main(args: Array[String]) {

        val conf = new SparkConf().setAppName("RemDup")

        val sc = new SparkContext(conf)

        val dataFile = "file:///export/server/spark/mycode/RemDup/datas"

        val data = sc.textFile(dataFile,2)

        val res = data.filter(_.trim().length>0).map(line=>(line.trim,"")).partitionBy(new HashPartitioner(1)).groupByKey().sortByKey().keys

        res.saveAsTextFile("file:///export/server/spark/mycode/RemDup/result")

    }

}

 

输出的文件:

 

3,编写独立应用程序实现求平均值问题

创建文件:

 

代码:

import org.apache.spark.SparkContext

import org.apache.spark.SparkContext._

import org.apache.spark.SparkConf

import org.apache.spark.HashPartitioner

 

object AvgScore {

    def main(args: Array[String]) {

        val conf = new SparkConf().setAppName("AvgScore")

        val sc = new SparkContext(conf)

        val dataFile = "file:///export/server/spark/mycode/AvgScore/datas"

        val data = sc.textFile(dataFile,3)

 

       val res = data.filter(_.trim().length>0).map(line=>(line.split(" ")(0).trim(),line.split(" ")(1).trim().toInt)).partitionBy(new HashPartitioner(1)).groupByKey().map(x => {

            var n = 0

        var sum = 0.0

        for(i <- x._2){

sum = sum + i

        n = n +1

         }

        val avg = sum/n

         val format = f"$avg%1.2f".toDouble

         (x._1,format)

    })

       res.saveAsTextFile("file:///export/server/spark/mycode/AvgScore/result")

    }

}

打包成功

 

输出结果:

 

出现的问题:

Sbt下载巨慢

解决方案(列出遇到的问题和解决办法,列出没有解决的问题):

解决方法:等,等了快两个小时

 

 

实验8

Flink初级编程实践

 

1.实验目的

1)通过实验掌握基本的Flink编程方法。

2)掌握用IntelliJ IDEA工具编写Flink程序的方法。

2.实验平台

1Ubuntu18.04(或Ubuntu16.04)。

2IntelliJ IDEA

3Flink1.9.1

3.实验步骤

1)使用IntelliJ IDEA工具开发WordCount程序

Linux系统中安装IntelliJ IDEA,然后使用IntelliJ IDEA工具开发WordCount程序,并打包成JAR文件,提交到Flink中运行。

2)数据流词频统计

使用Linux系统自带的NC程序模拟生成数据流,不断产生单词并发送出去。编写Flink程序对NC程序发来的单词进行实时处理,计算词频,并把词频统计结果输出。要求首先在IntelliJ IDEA中开发和调试程序,然后,再打成JAR包部署到Flink中运行。

 

4.实验报告

题目:

Flink初级编程实践

姓名

刘儒骏

日期2023/12/25

实验环境:CentOS Linux7  hadoop-3.3.0 IDEA jdk1.8.0 spark 3.1.2 hive3.1.2 hbase2.1.0 zookeeper 3.4.6 flink 1.14.0

实验内容与完成情况:

1:

打开flink

 

打包jar包成java -jar Flinkwordcount-1.0-SNAPSHOT .jar

 

运行输出:

 

2:原代码:

 

运行:

 

输入信息:

 

 

出现的问题:1,Flink进程已经启动,但是用浏览器失败

2,nc没有找到命令

解决方案(列出遇到的问题和解决办法,列出没有解决的问题):

1,修改端口号

2,下载nc再运行

posted @   liu_ru_jun  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示