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

瑞星  金牌会员 | 2024-11-20 14:19:29 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 993|帖子 993|积分 2979

spark的代码分为两种


  • 本地代码在driver端直接解析执行没有后续
  • 集群代码,会在driver端进行解析,然后让多个呆板进行集群形式的执行计算
  1. spark-shell --master spark://nn1:7077 --executor-cores 2 --executor-memory 2G
复制代码
  1. sc.textFile("/home/hadoop/a.txt")
  2. org.apache.spark.rdd.RDD[String] = /home/hadoop/a.txt MapPartitionsRDD[1] at textFile at
复制代码
rdd弹性分布式数据集合


  • 假如是sc调用的方法会在集群中执行
  • rdd调用的方法也会合群执行
  1. sc.textFile("/home/hadoop/a.txt")
复制代码
不是单机代码,但是文件不能再某一个呆板上,由于这个命令全部的呆板都会执行。
这个路径肯定要放在hdfs中
题目:第一行代码就读取了数据,为什么第一行没有出现错误?
spark中的方法[算子]它是分为两种


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

代码的整体逻辑是先利用转换类算子定义逻辑,但是不执行,一旦利用action算子就会触发运算,整体才执行,如许的设计可以大概最大化的减少内存的利用。
以是上传hdfs文件,读取
  1. hdfs dfs -put /home/hadoop/a.txt /
复制代码
spark-shell整体代码
  1. scala> //在spark-env.sh中配置HADOOP_CONF_DIR,默认会读取hdfs中的文件
  2. scala> sc.textFile("/a.txt")
  3. res6: org.apache.spark.rdd.RDD[String] = /a.txt MapPartitionsRDD[5] at textFile at <console>:26
  4. //放入数据到hdfs中
  5. scala> res6.flatMap(_.split(" "))
  6. res7: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[6] at flatMap at <console>:27
  7. scala> res7.map((_,1))
  8. res8: org.apache.spark.rdd.RDD[(String, Int)] = MapPartitionsRDD[7] at map at <console>:27
  9. scala> res8.groupBy(_._1)
  10. res9: org.apache.spark.rdd.RDD[(String, Iterable[(String, Int)])] = ShuffledRDD[9] at groupBy at <console>:27
  11. //分组完毕的返回值不再是map而是RDD[String,Iterable]
  12. scala> res9.mapValues(_.size)
  13. res10: org.apache.spark.rdd.RDD[(String, Int)] = MapPartitionsRDD[10] at mapValues at <console>:27
  14. //mapValues在scala中只能作用在map集合上,现在可以作用在RDD[k,v]
  15. scala> res10.foreach(println)
  16. //打印数据的时候每个机器都有,因为是分布式执行的
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

瑞星

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表