spark实验三-spark进阶编程

这篇具有很好参考价值的文章主要介绍了spark实验三-spark进阶编程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.Spark编程统计各地区租房人数

实验目标:

(1)   掌握在IntelliJ IDEA 中操作spark程序开发

(2)   打包程序提交集群运行

实验说明:

现有一份某省份各地区租房信息文件 house.txt,文件中共有8个数据字段,字段说明如下表所示:

字段名称

说明

租房ID

租房编号

标题

发布的租房标题

链接

网址,可查看租房信息

地区

房子所在地区

地点

房子所在城市地点

地铁站

附近的地铁站

出租房数

可出租的房子数量

日期

发布日期

请在IntelliJ IDEA 中进行spark编程统计各地区的租房人数,完成编译后打包spark工程,通过spark-submit提交程序至集群中运行。

实现思路及步骤:

(1)     读取数据并创建RDD

val lines = sc.textFile("file:///root/doc/house.txt")

(2)     清洗数据,例如某些地铁站数据为空


val clean_lines = lines.filter(line => {  
  val fields = line.split("\\s+") // 使用正则表达式分割字段  
  fields.length > 5 && fields(5).trim.nonEmpty // 确保至少有6个字段且第6个字段不为空  
})

(3)     使用reduceByKey()方法统计人数


// 将清洗后的数据的第一列作为键,1作为值,转换为键值对  
val categoryPairs = clean_lines.map(line => {  
  val fields = line.split("\\s+")  
  (fields(0).trim, 1) // 假设第一列是分类信息  
})  
  
// 使用reduceByKey聚合相同分类的计数  
val categoryCounts = categoryPairs.reduceByKey(_ + _)  
  
categoryCounts.count()

spark实验三-spark进阶编程,spark,大数据,分布式,scala

(4)     使用saveAsTextFile()保存数据到hdfs


val hdfsOutputPath = "hdfs://master:9000/user/hadoop/clean_lines"
val lines = sc.textFile("file:///root/doc/house.txt")
 lines.saveAsTextFile(hdfsOutputPath)
 hdfs dfs -cat /user/hadoop/clean_lines/part-00000

spark实验三-spark进阶编程,spark,大数据,分布式,scala

spark实验三-spark进阶编程,spark,大数据,分布式,scala

2.自定义分区器事先按照人物标签进行数据分区

实验目标:

  1. 掌握使用spark自定义分区
  2. 掌握打包spark工程
  3. 掌握通过spark-submit提交应用

实验说明

先有一份某年度中国女排集训运动员数据文件 Volleyball_Plaryer.csv ,数据字段说明如下表所示

spark实验三-spark进阶编程,spark,大数据,分布式,scala

现要求在IntelliJ IDEA 中进行spark编程,通过自定义分区实现将运动员按照所属位置进行分区,并将程序打包,通过spark-submit提交应用。按照“主攻,接应,二传,副攻,自由人”五个标签设置五个分区,将分区结果输出到hdfs上。其中一个分区的结果举例如图所示:

spark实验三-spark进阶编程,spark,大数据,分布式,scala

实现思路及步骤:

  1. 使用textFile()方法读取数据创建RDD,并设置分区数为5
  2. 使用map()方法将数据输入数据按都好进行分割,筛选出position和name字段,并转化为(Positon,Name)的形式
  3. 自定义MyPartioner类,继承该类,重写类里面的numPartions和getPartition 方法。
  4. 在主函数中调用自定义分区类MyPartioner
  5. 打包spark工程,将应用程序提交至集群运行

 如何在idea使用scala操作可以参考

IDEA使用SCALA-CSDN博客

import org.apache.spark.api.java.JavaRDD.fromRDD
import org.apache.spark.repl.Main.conf
import org.apache.spark.{Partitioner, SparkConf, SparkContext}


object Main {
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf()
    sparkConf.setMaster("local")   //本地单线程运行
    sparkConf.setAppName("Main")
    val sc = new SparkContext(sparkConf)
    val lines = sc.textFile("/root/doc/Volleyball_Players.csv",5)
    val  new_lines= lines.map(line => {
      val fields = line.split(",")
      val position = fields(5).trim
      val name = fields(0).trim
      (position, name)
    })
    val myPartitioner: MyPartitioner = new MyPartitioner(5)
    new_lines.repartition(myPartitioner.numPartitions)
    new_lines.foreach(println)
  }
}
class MyPartitioner(override val numPartitions: Int) extends Partitioner {
  override def getPartition(key: Any): Int = key match {
    case (position: String) => position.hashCode % numPartitions
  }
}

打包代码

spark实验三-spark进阶编程,spark,大数据,分布式,scala

打包成功后在你本机找到该文件

spark实验三-spark进阶编程,spark,大数据,分布式,scala

传到linux下

spark实验三-spark进阶编程,spark,大数据,分布式,scala

将Volleyball_Players.csv上传到hdfs目录下

 hdfs dfs -mkdir -p /root/doc
hdfs dfs -put Volleyball_Players.csv /root/doc/

此时将代码提交
spark-submit --master yarn --class Main untitled4.jar

--master yarn 指定了 Spark 应用程序应该运行在 YARN(Yet Another Resource Negotiator)集群管理器上。

--class Main指示 Spark 应用程序的入口点是 Main类中的 main 方法。您需要将 Main 替换为您实际的主类名。

untitled4.jar 是包含您 Spark 应用程序的 JAR 文件。

spark实验三-spark进阶编程,spark,大数据,分布式,scala文章来源地址https://www.toymoban.com/news/detail-859290.html

到了这里,关于spark实验三-spark进阶编程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据学习06-Spark分布式集群部署

    配置好IP vim /etc/sysconfig/network-scripts/ifcfg-ens33 修改主机名 vi /etc/hostname 做好IP映射 vim /etc/hosts 关闭防火墙 systemctl status firewalld systemctl stop firewalld systemctl disable firewalld 配置SSH免密登录 ssh-keygen -t rsa 下载Scala安装包 配置环境变量 添加如下配置 使环境生效 验证 Spark官网 解压 上

    2024年02月10日
    浏览(70)
  • 大数据开发之Spark(RDD弹性分布式数据集)

    rdd(resilient distributed dataset)叫做弹性分布式数据集,是spark中最基本的数据抽象。 代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。 1.1.1 rdd类比工厂生产 1.1.2 wordcount工作流程 1、一组分区(partition),即是数据集的基本组成单位,

    2024年01月24日
    浏览(71)
  • 大数据课程K2——Spark的RDD弹性分布式数据集

    文章作者邮箱:yugongshiye@sina.cn              地址:广东惠州 ⚪ 了解Spark的RDD结构; ⚪ 掌握Spark的RDD操作方法; ⚪ 掌握Spark的RDD常用变换方法、常用执行方法; 初学Spark时,把RDD看做是一个集合类型(类似于Array或List),用于存储数据和操作数据,但RDD和普通集合的区别

    2024年02月12日
    浏览(55)
  • Spark大数据分析与实战笔记(第三章 Spark RDD 弹性分布式数据集-02)

    人生很长,不必慌张。你未长大,我要担当。 传统的MapReduce虽然具有自动容错、平衡负载和可拓展性的优点,但是其最大缺点是采用非循环式的数据流模型,使得在迭代计算式要进行大量的磁盘IO操作。Spark中的RDD可以很好的解决这一缺点。 RDD是Spark提供的最重要的抽象概念

    2024年02月22日
    浏览(96)
  • 大数据开源框架环境搭建(七)——Spark完全分布式集群的安装部署

    前言:七八九用于Spark的编程实验 大数据开源框架之基于Spark的气象数据处理与分析_木子一个Lee的博客-CSDN博客_spark舆情分析 目录 实验环境: 实验步骤: 一、解压 二、配置环境变量:  三、修改配置文件  1.修改spark-env.sh配置文件: 2.修改配置文件slaves: 3.分发配置文件:

    2024年02月11日
    浏览(54)
  • 云计算与大数据第16章 分布式内存计算平台Spark习题

    1、Spark是Hadoop生态(  B  )组件的替代方案。 A. Hadoop     B. MapReduce        C. Yarn             D.HDFS 2、以下(  D  )不是Spark的主要组件。 A. Driver      B. SparkContext       C. ClusterManager D. ResourceManager 3、Spark中的Executor是(  A  )。 A.执行器      B.主节

    2024年02月14日
    浏览(119)
  • 分布式计算中的大数据处理:Hadoop与Spark的性能优化

    大数据处理是现代计算机科学的一个重要领域,它涉及到处理海量数据的技术和方法。随着互联网的发展,数据的规模不断增长,传统的计算方法已经无法满足需求。因此,分布式计算技术逐渐成为了主流。 Hadoop和Spark是目前最为流行的分布式计算框架之一,它们都提供了高

    2024年01月23日
    浏览(57)
  • 大数据 | 实验零:安装 Hadoop 伪分布式系统

    👀 前言 :本篇是个人配置环境的总结,基于指导书,补充了许多在配置过程中出现的问题的解决细节。希望能帮到你😄。 Vmware workstation pro 16 Ubuntu 20.04 JDK 1.8 Hadoop 3.2.2 下边资源是本篇博客会用到的相关文件 (建议直接下载,相关代码直接对应的下述文件, 下载完先不要动

    2023年04月17日
    浏览(48)
  • 数据存储和分布式计算的实际应用:如何使用Spark和Flink进行数据处理和分析

    作为一名人工智能专家,程序员和软件架构师,我经常涉及到数据处理和分析。在当前大数据和云计算的时代,分布式计算已经成为了一个重要的技术方向。Spark和Flink是当前比较流行的分布式计算框架,它们提供了强大的分布式计算和数据分析功能,为数据处理和分析提供了

    2024年02月16日
    浏览(62)
  • 头歌Educoder云计算与大数据——实验三 分布式文件系统HDFS

    本关任务:使用Hadoop命令来操作分布式文件系统。 为了完成本关任务你需要了解的知识有:1.HDFS的设计,2.HDFS常用命令。 HDFS的设计 点点点…题目省略,懒得写了,下同 分布式文件系统 NameNode与DataNode HDFS的常用命令 在右侧命令行中启动Hadoop,进行如下操作。 在HDFS中创建

    2024年02月13日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包