2022-04-07 18:27阅读: 81评论: 0推荐: 0

5.RDD操作综合实例

一、词频统计

A. 分步骤实现

准备文件

  1. 下载小说或长篇新闻稿

  1. 上传到hdfs上

读文件创建RDD

>>> lines = sc.textFile("hdfs://localhost:9000/user/hadoop/my.txt")

>>> lines

分词

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

预处理

排除大小写lower(),map()

words2 = words.map(lambda a:a.lower())
words2.collect()

标点符号re.split(pattern,str),flatMap()

import re
words3 = words2.flatMap(lambda a:re.split('\W+', a))
words3.collect()

words3 = words3.flatMap(lambda a:a.split())
words3.collect()

停用词,可网盘下载stopwords.txt,filter()

stopword = sc.textFile('stopwords.txt').flatMap(lambda a:a.split()).collect()
stopword


words4 = words3.filter(lambda a:a not in stopword)
words4.collect()

除去长度小于2的词 filter()

words5 = words4.filter(lambda a:len(a)>2)
words5.collect()

统计词频

// 将各个单词统计结果转换成键值对
wordKV = words5.map(lambda word:(word,1))
wordKV.collect()

// 再将value进行累加,把相同Key的value进行累加
wc = wordKV.reduceByKey(lambda x,y:x+y)
wc.collect()

按词频排序

wcSort = wc.sortBy(lambda wc:wc[1], False)
wcSort.collect()

输出到文件

wcSort.saveAsTextFile("file:///home/hadoop/output/RDD5")
wcSort.saveAsTextFile("RDD5")

查看结果

hdfs dfs -ls ./RDD5
hdfs dfs -cat ./RDD5/part-00000 | head -10

B. 一句话实现:文件入文件出

sc.textFile("file:///home/hadoop/my.txt").flatMap(lambda line: line.split(" ")).map(lambda word : word.lower()).flatMap(lambda word:re.split('\W+', word)).flatMap(lambda word:word.split(" ")).filter(lambda word:len(word)>2).map(lambda word : (word,1)).reduceByKey(lambda x,y : x+y) .sortBy(lambda wc:wc[1],False).saveAsTextFile("RDD5_oneline")

C. 和作业2的“二、Python编程练习:英文文本的词频统计 ”进行比较,理解并用自己话表达Spark编程的特点

Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操作,还提供了多种数据集操作类型,编程模型比Hadoop MapReduce更灵活

Spark提供了内存计算,可将中间结果放到内存中,对于迭代运算效率更高

Spark基于DAG的任务调度执行机制,要优于Hadoop MapReduce的迭代执行机制

二、求Top值

网盘下载payment.txt文件,通过RDD操作实现选出最大支付额的用户

丢弃不合规范的行:

items = sc.textFile('payment.txt').map(lambda line:line.split(','))
items.collect()

items.map(lambda item:len(item)).collect()
items.count()

items.filter(lambda item:len(item)==4).collect()

// 丢弃空行、少数据项、缺失数据
items.filter(lambda item:len([i for i in item if len(i)>0])==4).collect()
items.filter(lambda item:len([i for i in item if len(i)>0])==4).count()

按支付金额排序

// 有效记录
recs = items.filter(lambda item:len([i for i in item if len(i)>0])==4)
recs

// 记录按支付金额排序
recs.sortBy(lambda rec:int(rec[2]),False).collect()

取出Top3

top3=recs.sortBy(lambda rec:int(rec[2]),False).take(3)
top3

本文作者:stu(dying)

本文链接:https://www.cnblogs.com/DingyLand/p/homework_05_.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   stu(dying)  阅读(81)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
🔑
  1. 1 Dancing with my phone (Explicit) HYBS
  2. 2 Catch (Feat. Hwa Sa) Epik High (에픽하이)
  3. 3 건물 사이에 피어난 장미 (Rose Blossom) H1-KEY
  4. 4 The Weekend 88rising,BIBI
  5. 5 天气未报 余佳运
  6. 6 和你 余佳运
  7. 7 九月底 余佳运
  8. 8 POP/STARS K/DA,Madison Beer,(G)I-DLE,Jaira Burns
  9. 9 Uh-Oh (G)I-DLE
  10. 10 For You (G)I-DLE
  11. 11 데이지(雏菊) PENTAGON
  12. 12 BAD PENTAGON
Uh-Oh - (G)I-DLE
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 田小娟

作曲 : 田小娟/쥰/MooF (153/Joombas)

编曲 : 쥰/MooF (153/Joombas)

Uh-oh 거기 누군가요

Uh-oh 나를 안다고요

Uh-oh 난 잊어버렸죠 버렸죠

너도 웃기지 않나요

난 좀 당황스럽네요

Uh-oh 친한 척 말아줘 말하고 다녀

Uh-uh-oh 만지지 말고 저기 떨어져요

내게 뭐를 원하나요 다 똑같죠 너처럼

너 같은 거는 이제 전혀 모르겠네요

Uh-uh-oh 나 변했나요 다 똑같죠 너처럼

베풀거나 내주거나 천사 같은 Hello

달콤하게 사탕 발린 말도

예의 없어 착한 척 말고 꺼져

이제 와 가식 따위 떨지 말아

맴돌거나 말 걸거나 박쥐 같은 Follower

내 성공을 점쳤다는 Liar

어이없어 친한 척 말고 꺼져

널 위한 가식 따윈 기대 말아

엉망진창 Only see now

몰랐지 오리 속 Swan

황홀한 케이크 위 Blow out

내 머리 위에 Crown

Yo 말했지 이곳의 보석은 나야 투자해 어서

넌 번쩍거린 것만 찾느라

여길 번쩍 들어 올릴 난 못 찾았어

Uh uh uh uh uh uh

No no no no no no

너 별로 더 별로야 됐으니 꺼져

Uh-uh-oh 만지지 말고 저기 떨어져요

내게 뭐를 원하나요 다 똑같죠 너처럼

너 같은 거는 이제 전혀 모르겠네요

Uh-uh-oh 나 변했나요 다 똑같죠 너처럼

베풀거나 내주거나 천사 같은 Hello

달콤하게 사탕 발린 말도

예의 없어 착한 척 말고 꺼져

이제 와 가식 따위 떨지 말아

맴돌거나 말 걸거나 박쥐 같은 Follower

내 성공을 점쳤다는 Liar

어이없어 친한 척 말고 꺼져

널 위한 가식 따윈 기대 말아

Uh-oh 믿을 수 없게

Uh-oh 손댈 수 없게

Uh-oh 잘못된 것 같은 얘기

Yo you got it

Don't mess with me

Umm I'm not finished

Ok let's go

아무도 몰랐지

이 Masterpiece 이 Masterpiece

입가에 반복되는 Melody oh melody

너무나 완벽한 내 A to Z oh A to Z

팬들은 사랑해 Yeah L-O-V-E yeah L-O-V-E

Uh-oh