zoukankan      html  css  js  c++  java
  • 05 RDD编程

    一、词频统计:

    1.读文本文件生成RDD lines

    lines=sc.textFile("file:///usr/local/spark/mycode/rdd/word.txt")

    lines.foreach(print)

    2.将一行一行的文本分割成单词 words flatmap()

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

    words.foreach(print)

    3.全部转换为小写 lower()

    wordsxx=lines.map(lambda word:word.lower())

    wordsxx.foreach(print)

    4.去掉长度小于3的单词 filter()

    word=words.filter(lambda words:len(words)>2)

    word.foreach(print)

    5.去掉停用词

    lines=textFile("file:///usr/local/spark/mycode/rdd/word.txt")

    with open("/usr/lcaol/spark/mycode/rdd/stopwords.txt") as f:

          stops=f.read().split()

    lines.flatMap(lambda line:line.split()).filter(lambda word:word not in stops).collect()

    6.转换成键值对 map()

    words.map(lambda word:(word,1)).collect()

    7.统计词频 reduceByKey()

    words.map(lambda word:(word,1)).reduceByKey(lambda a,b:a+b).collect()

     

    8.按字母顺序排序 sortBy(f)

    words.map(lambda word:(word,1)).reduceByKey(lambda a,b:a+b).sortBy(lambda word:word[0]).collect()

    9.按词频排序 sortByKey()

    words.map(lambda word:(word,1)).reduceByKey(lambda a,b:a+b).sortByKey().collect()

    二、学生课程分数案例

    lines=sc.textFile("file:///usr/local/spark/mycode/rdd/xs.txt")

    • 总共有多少学生?map(), distinct(), count()

    lines.map(lambda line:line.split(',')[0]).distinct().count()

    • 开设了多少门课程?

    lines.map(lambda line:line.split(',')[1]).distinct().count()

    • 每个学生选修了多少门课?map(), countByKey()

    lines.map(lambda line:line.split(',')).map(lambda line:(ine[0],line[1])).countByKey()

    • 每门课程有多少个学生选?map(), countByValue()

    lines.map(lambda line:line.split(',')).map(lambda line:line[1]).countByValue()

    • Tom选修了几门课?每门课多少分?filter(), map() RDD

    lines.file(lambda line:"Tom" in line).map(lambda line:line.split(','))

    • Tom选修了几门课?每门课多少分?map(),lookup()  list

    lines.map(lambda line:line.split(',')).map(lambda line:(line[0],(line[1],line[2]))).lookup('Tom')

    • Tom的成绩按分数大小排序。filter(), map(), sortBy()

    lines.filter(lambda line:'Tom' in line).map(lambda line:l;ine.split(',')).sortBy(lambda line:line[2],False).collect()

    • Tom的平均分。map(),lookup(),mean()

    import numpy as np

    name=lines.map(lambda line:line.split(',')).map(lambda line:(line[0],(line[1],line[2]))).lookup('Tom')

    np.mean([int(x) for x in name])

  • 相关阅读:
    新书《JFinal极速开发实战》正式发布
    Maven转化为Dynamic Web Module
    SpringMVC——数据校验
    SpringMVC——请求映射
    Spring——Bean的命名及实例化
    js实现省市区三级联动
    MySQL数据库忘记密码
    Spring——控制反转
    SpringMVC(五)@RequestHeader和@CookieValue
    SpringMVC(四)@RequestParam
  • 原文地址:https://www.cnblogs.com/0311Chrome/p/14674076.html
Copyright © 2011-2022 走看看