第四次作业

Posted on 2022-03-15 16:16  bracee  阅读(43)  评论(0编辑  收藏  举报

一、 RDD创建

  1.从本地文件系统中加载数据创建RDD

lines=sc.textFile("file:///home/hadoop/hbr.txt")
lines.foreach(print)

 

2.从HDFS加载数据创建RDD

  1. 启动hdfs
start-all.sh
  1. 上传文件
hdfs dfs -put hbr.txt/hdfs

 

 

  3.查看文件

hdfs dfs -cat /hdfs/ hbr.txt

加载

  1. 停止hdfs
  2. stop-all.sh
  1. 通过并行集合(列表)创建RDD


  输入列表
  字符串
  numpy生成数组

二、 RDD操作

  转换操作

  1. filter(func)
    显式定义函数
    lambda函数

 

 

  1. map(func)
    显式定义函数
    lambda函数

 

 

行动操作

  1. foreach(print)
    foreach(lambda a:print(a.upper())
  2. collect()

 

  1. 字符串分词
    1. lines = sc.textFile("file:///home/hadoop/hbr.txt")
      words = lines.flatMap(lambda line:line.split(""))
      words = lines.map(lambda line:line.split())
      words.foreach(print)

       

       

      words = lines.flatMap(lambda line:line.split())
      words.foreach(print)

       

    2. 数字加100
    3. 字符串加固定前缀
  2. flatMap(func)
    1. 分词
    2. 单词映射成键值对
  3. reduceByKey()
    1. 统计词频,累加
    2. 乘法规则
  4.  groupByKey()
    1. 单词分组
    2.  

       

      words = sc.parallelize([("Hadoop",1),("is",1),("good",1),("Spark",1),("is",1),("fast",1),("Spark",1),("is",1),("better",1)])
      words1 = words.groupByKey()
      words1.foreach(print)

       

    3. 查看分组的内容
    4. 分组之后做累加 map
  5. sortByKey()
    1. 词频统计按单词排序
    2.  

       

      pairRDD.sortByKey().foreach(print)

       

  6. sortBy()
    1. 词频统计按词频排序

 

行动操作

    1. foreach(print)
      foreach(lambda a:print(a.upper())
    2.  

       

      list = [("Hadoop",1),("Spark",1),("Hive",1),("Spark",1)]
      pairRDD = sc.parallelize(list)
      pairRDD.foreach(print)

       

    3. collect()
    4.  

       

    5. count()
    6. take(n)
    7. reduce() 
      数值型的rdd元素做累加
    8.  

       

      words = sc.parallelize([("Hadoop",1),("is",1),("good",1),("Spark",1),("is",1),("fast",1),("Spark",1),("is",1),("better",1)])
      words1 = words.reduceByKey(lambda a,b:a+b)
      words1.foreach(print)

       


      与reduceByKey区别
    9.  

       

       

words = ["one","two","two","three","three","three"]
wordPairsRDD = sc.parallelize(words).map(lambda word:(word,1))
wordCountsWithReduce = wordPairsRDD.reduceByKey(lambda a,b:a+b)
wordCountsWithReduce.foreach(print)