当前位置: 首页 > news >正文

【大数据学习 | Spark】spark-shell开发

spark的代码分为两种

  • 本地代码在driver端直接解析执行没有后续

  • 集群代码,会在driver端进行解析,然后让多个机器进行集群形式的执行计算

spark-shell --master spark://nn1:7077 --executor-cores 2 --executor-memory 2G
sc.textFile("/home/hadoop/a.txt")
org.apache.spark.rdd.RDD[String] = /home/hadoop/a.txt MapPartitionsRDD[1] at textFile at

rdd弹性分布式数据集合

  • 如果是sc调用的方法会在集群中执行
  • rdd调用的方法也会集群执行
sc.textFile("/home/hadoop/a.txt")

不是单机代码,但是文件不能再某一个机器上,因为这个命令所有的机器都会执行。

这个路径一定要放在hdfs中

问题:第一行代码就读取了数据,为什么第一行没有出现错误?

spark中的方法[算子]它是分为两种

  • 转换类算子,定义逻辑,并且调用完毕以后具有返回值的,调用算子以后是不是返回rdd
  • 行动类算子,触发计算,并且没有rdd的返回

代码的整体逻辑是先使用转换类算子定义逻辑,但是不执行,一旦使用action算子就会触发运算,整体才执行,这样的设计能够最大化的减少内存的使用。

所以上传hdfs文件,读取

hdfs dfs -put /home/hadoop/a.txt /

spark-shell整体代码

scala> //在spark-env.sh中配置HADOOP_CONF_DIR,默认会读取hdfs中的文件scala> sc.textFile("/a.txt")
res6: org.apache.spark.rdd.RDD[String] = /a.txt MapPartitionsRDD[5] at textFile at <console>:26
//放入数据到hdfs中
scala> res6.flatMap(_.split(" "))
res7: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[6] at flatMap at <console>:27scala> res7.map((_,1))
res8: org.apache.spark.rdd.RDD[(String, Int)] = MapPartitionsRDD[7] at map at <console>:27scala> res8.groupBy(_._1)
res9: org.apache.spark.rdd.RDD[(String, Iterable[(String, Int)])] = ShuffledRDD[9] at groupBy at <console>:27
//分组完毕的返回值不再是map而是RDD[String,Iterable]
scala> res9.mapValues(_.size)
res10: org.apache.spark.rdd.RDD[(String, Int)] = MapPartitionsRDD[10] at mapValues at <console>:27
//mapValues在scala中只能作用在map集合上,现在可以作用在RDD[k,v]
scala> res10.foreach(println)
//打印数据的时候每个机器都有,因为是分布式执行的

http://www.lryc.cn/news/487586.html

相关文章:

  • 《Python制作动态爱心粒子特效》
  • Jmeter 如何导入证书并调用https请求
  • Python程序15个提速优化方法
  • 足球虚拟越位线技术FIFA OT(二)
  • centos7.9单机版安装K8s
  • 图像编辑一些概念:Image Reconstruction与Image Re-generation
  • 【STM32】在 STM32 USB 设备库添加新的设备类
  • 【Redis】Redis实现的消息队列
  • # Spring事务
  • Java学习笔记--数组常见算法:数组翻转,冒泡排序,二分查找
  • ARM 架构(Advanced RISC Machine)精简指令集计算机(Reduced Instruction Set Computer)
  • 7.STM32之通信接口《精讲》之USART通信---多字节数据收发(数据包的模式:HEX数据包和文本数据包)
  • 基于Vue+SpringBoot的求职招聘平台
  • WebRTC 和 WebSocket
  • 小车综合玩法--5.画地为牢
  • 数据库课程设计全流程:方法与实例解析
  • 用Ruby编写一个自动化测试脚本,验证网站登录功能的正确性。
  • 跳表 | 基本概念 | 代码实现
  • 分数加减
  • 基于卷积神经网络的皮肤病识别系统(pytorch框架,python源码,GUI界面,前端界面)
  • QT与嵌入式——获取网络实时时间
  • 优化装配,提升品质:虚拟装配在汽车制造中的关键作用
  • Bug的严重等级和优先级别与分类
  • 游戏引擎学习第13天
  • bind返回失败(ctrl+c)结束后不能再次加载
  • 菜鸟驿站二维码/一维码 取件识别功能
  • 23种设计模式-备忘录(Memento)设计模式
  • 搜维尔科技:Manus遥操作五指机械手专用手套惯性高精度虚拟现实
  • MySql面试题.运维面试题之五
  • 小程序-基于java+SpringBoot+Vue的小区服务管理系统设计与实现