实验4rdd编程初级实践(代码片段)

miria-486 miria-486     2023-03-09     688

关键词:

注意:spark的编码格式是utf-8,其他的格式会有乱码,所以文件要使用utf-8编码

pom.xml:

技术图片
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>gao</groupId>
    <artifactId>WordCount</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <spark.version>2.1.0</spark.version>
        <scala.version>2.11</scala.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_$scala.version</artifactId>
            <version>$spark.version</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-streaming_$scala.version</artifactId>
            <version>$spark.version</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_$scala.version</artifactId>
            <version>$spark.version</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-hive_$scala.version</artifactId>
            <version>$spark.version</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-mllib_$scala.version</artifactId>
            <version>$spark.version</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>

            <plugin>
                <groupId>org.scala-tools</groupId>
                <artifactId>maven-scala-plugin</artifactId>
                <version>2.15.2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19</version>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>

        </plugins>
    </build>

</project>
View Code

 

(1)该系总共有多少学生; 

(2)该系共开设来多少门课程;

(3)Tom 同学的总成绩平均分是多少;

(4)求每名同学的选修的课程门数;

(5)该系 DataBase 课程共有多少人选修;

(6)各门课程的平均分是多少;

(7)使用累加器计算共有多少人选了 DataBase 这门课。

技术图片
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
object one 
  def main(args: Array[String]) 
    val conf = new SparkConf()
    conf.setMaster("local")
      .setAppName("text1")
    val sc = new SparkContext(conf)
    val rdd = sc.textFile("C:\Users\Administrator\Desktop\Data01.txt")
    //该系总共有多少学生;
    val par=rdd.map( row=>row.split(",")(0))
    var count=par.distinct()
    println("学生总人数:"+count.count())
    //该系共开设来多少门课程;
    val couse=rdd.map( row=>row.split(",")(1))
    println("课程数:"+couse.distinct().count())
   //Tom 同学的总成绩平均分是多少;
    val pare = rdd.filter(row=>row.split(",")(0)=="Tom")
    /*pare.foreach(println)*/
    pare.map(row=>(row.split(",")(0),row.split(",")(2).toInt))
      .mapValues(x=>(x,1))
      .reduceByKey((x,y) => (x._1+y._1,x._2 + y._2))
      .mapValues(x => (x._1 / x._2))
      .collect().foreach(x=>println("Tom的平均成绩:"+x._2))
    //求每名同学的选修的课程门数;
    val pare2 = rdd.map(row=>(row.split(",")(0),row.split(",")(1)))
    pare2.mapValues(x => (x,1)).reduceByKey((x,y) => (" ",x._2 + y._2)).mapValues(x => x._2).foreach(println)
   //该系 DataBase 课程共有多少人选修;
    val pare3 = rdd.filter(row=>row.split(",")(1)=="DataBase")
    println("DataBase的选修人数:"+pare3.count)
    // 各门课程的平均分是多少;
    val pare4 = rdd.map(row=>(row.split(",")(1),row.split(",")(2).toInt))
    pare4.mapValues(x=>(x,1))
      .reduceByKey((x,y) => (x._1+y._1,x._2 + y._2))
      .mapValues(x => (x._1/ x._2))
      .collect().foreach(println)
    //使用累加器计算共有多少人选了 DataBase 这门课。
    val pare5 = rdd.filter(row=>row.split(",")(1)=="DataBase")
      .map(row=>(row.split(",")(1),1))
    val accum = sc.longAccumulator("My Accumulator")
    pare5.values.foreach(x => accum.add(x))
    println("选了 DataBase 这门课的人数:"+accum.value)
  
View Code

2.对于两个输入文件 A 和 B,编写 Spark 独立应用程序,对两个文件进行合并,并剔除其 中重复的内容,得到一个新文件 C

技术图片
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import org.apache.spark.HashPartitioner

object two

  def main(args: Array[String]) 
    val conf = new SparkConf()
    conf.setMaster("local")
      .setAppName("text2")
    val sc = new SparkContext(conf)
    val dataFile = "C:\Users\Administrator\Desktop\data"
    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("result")
  
View Code

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

技术图片
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import org.apache.spark.HashPartitioner

object three 
  def main(args: Array[String]) 
    val conf = new SparkConf()
    conf.setMaster("local")
      .setAppName("text3")
    val sc = new SparkContext(conf)
    val dataFile = "C:\Users\Administrator\Desktop\data1"
    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("result1")
  
View Code

 

rdd编程初级实践(基于python)(代码片段)

RDD编程初级实践(基于python)1.实验目的2.实验环境3.实验数据3.1pyspark交互式编程(实验描述)3.2编写独立应用程序实现数据去重(实验描述)3.3编写独立应用程序实现求平均值问题(实验描述)3.4... 查看详情

第五周周二练习:实验5sparksql编程初级实践(代码片段)

1.题目:源码:importjava.util.Propertiesimportorg.apache.spark.sql.types._importorg.apache.spark.sql.Rowimportorg.apache.spark.sql.SparkSessionimportorg.apache.spark.sql.DataFrameReaderobjectTestMySQLdefma 查看详情

实验5mapreduce初级编程实践——编程实现文件合并和去重操作(代码片段)

一、实验目的通过实验掌握基本的MapReduce编程方法;掌握用MapReduce解决一些常见的数据处理问题,包括数据去重、数据排序和数据挖掘等。二、实验平台操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04)Hadoop版本ÿ... 查看详情

实验5mapreduce初级编程实践——对给定的表格进行信息挖掘(代码片段)

一、实验目的通过实验掌握基本的MapReduce编程方法;掌握用MapReduce解决一些常见的数据处理问题,包括数据去重、数据排序和数据挖掘等。二、实验平台操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04)Hadoop版本ÿ... 查看详情

实验7spark初级编程实践(代码片段)

文章目录一、实验目的二、实验平台三、实验步骤1.准备工作(1)安装spark及其API程序(2)配置环境变量(3)启动Hadoop2.Spark读取文件系统的数据3.编写独立应用程序实现数据去重4.编写独立应用程序实现求... 查看详情

实验5mapreduce初级编程实践(python实现)(代码片段)

一、实验目的通过实验掌握基本的MapReduce编程方法;掌握用MapReduce解决一些常见数据处理问题的方法,包括数据合并、数据去重、数据排序和数据挖掘等。二、实验平台操作系统:Ubuntu18.04(或Ubuntu16.04)Hadoop... 查看详情

《移动项目实践》实验报告——初级控件(代码片段)

实验目的1、掌握Android屏幕显示与初级视图的相关知识;2、掌握包括屏幕显示基础、简单布局的用法、简单控件的用法、简单图形的用法实验内容以windows上的计算器为例,程序界面如下图所示:完成精简之后的Android... 查看详情

实验5mapreduce初级编程实践——编程实现文件合并和去重操作(代码片段)

一、实验目的通过实验掌握基本的MapReduce编程方法;掌握用MapReduce解决一些常见的数据处理问题,包括数据去重、数据排序和数据挖掘等。二、实验平台操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04)Hadoop版本ÿ... 查看详情

rdd编程初级实践(代码片段)

RDD编程初级实践一、pyspark交互式编程二、编写独立应用程序实现数据去重三、编写独立应用程序实现求平均值问题一、pyspark交互式编程本作业提供分析数据data.txt,该数据集包含了某大学计算机系的成绩,数据格式如下... 查看详情

rdd编程初级实践(代码片段)

...Jim,DataBase,90Jim,Algorithm,60Jim,DataStructure,80……请根据给定的实验数据,在pyspark中通过编程来计算以下内容:(1)该系总共有多少学生;代码如下:lines=sc.textFile("file:///usr/local/spark/sparksqldata/data.txt")r... 查看详情

rdd编程初级实践

RDD编程初级实践一、实验目的(1)熟悉Spark的RDD基本操作及键值对操作;(2)熟悉使用RDD编程解决实际具体问题的方法。二、实验平台操作系统:Ubuntu16.04Spark版本:2.4.0Python版本:3.4.3三、实验内... 查看详情

2021-06-09*rdd编程初级实践(代码片段)

RDD编程初级实践一、数据来源描述pyspark交互式编程科任老师提供分析数据data.txt,该数据集包含了某大学计算机系的成绩,数据格式如下所示:Tom,DataBase,80Tom,Algorithm,50Tom,DataStructure,60Jim,DataBase,90Jim,Algorithm,60Jim,DataStruct... 查看详情

实验5sparksql编程初级实践

SparkSQL基本操作 (1)查询所有数据; (2)查询所有数据,并去除重复的数据; (3)查询所有数据,打印时去除id字段; (4)筛选出age>30的记录; (5)将数据按age分组; (6)将数据按name升序排列; (7)取出前3行数... 查看详情

sparksql编程初级实践

今下午在课上没有将实验做完,课下进行了补充,最终完成。下面附上厦门大学数据库实验室中spark实验官网提供的标准答案,以供参考。 三、实验内容和要求1.SparkSQL基本操作 将下列json数据复制到你的ubuntu系统/usr/loca... 查看详情

实验5mapreduce初级编程实践——编写程序实现对输入文件的排序(代码片段)

一、实验目的通过实验掌握基本的MapReduce编程方法;掌握用MapReduce解决一些常见的数据处理问题,包括数据去重、数据排序和数据挖掘等。二、实验平台操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04)Hadoop版本ÿ... 查看详情

大数据hadoop实验报告(代码片段)

文章目录实验一熟悉常用的Linux操作和Hadoop操作1.实验目的2.实验平台3.实验内容和要求实验二熟悉常用的HDFS操作1.实验目的2.实验平台3.实验步骤实验三熟悉常用的HBase操作1.实验目的2.实验平台3.实验步骤实验四MapReduce/Spark编程初... 查看详情

大数据hadoop实验报告(代码片段)

文章目录实验一熟悉常用的Linux操作和Hadoop操作1.实验目的2.实验平台3.实验内容和要求实验二熟悉常用的HDFS操作1.实验目的2.实验平台3.实验步骤实验三熟悉常用的HBase操作1.实验目的2.实验平台3.实验步骤实验四MapReduce/Spark编程初... 查看详情

rdd编程初级实践

RDD编程初级实践一、实验目的(1)熟悉Spark的RDD基本操作及键值对操作;(2)熟悉使用RDD编程解决实际具体问题的方法。二、实验平台操作系统:Ubuntu16.04Spark版本:2.4.0Python版本:3.4.3三、实验内... 查看详情