题目:
- 求TOP值
假设在某个目录下有若干个文本文件里面包含很多行数据,每行数据有4个字段和值构成,不同字段值之间用逗号隔开,四个字段为orderid、userid、payment和productid。要求求出TOP N 个payment值。数据文件为file0.txt。
- 上传file0.txt文件到/usr/local/spark/mycode/RDD目录下,并且创建了TopN.p文件
进入pyspark
-
#创建SparkConf对象,设置应用程序名称和部署模式
-
-
# 创建SparkContext对象
-
# 从本地文件系统读取数据
# 过滤出长度不为0且包含4个逗号的行
# 提取第三列数据
# 将第三列数据转换成键值对(key为数字,value为空串)
# 对数据进行重新分区,分区数为1
# 按照键降序排序
# 取出前5个键
# 打印前5个键
代码示例
-
>>> from pyspark import SparkConf, SparkContext >>> conf = SparkConf().setMaster("local").setAppName("ReadHBase") >>> sc = SparkContext(conf = conf) >>> lines= sc.textFile("file:///usr/local/spark/mycode/RDD/file0.txt") >>> result1 = lines.filter(lambda line:(len(line.strip()) > 0) and (len(line.split(","))== 4)) >>> result2 = result1.map(lambda x:x.split(",")[2]) >>> result3 = result2.map(lambda x:(int(x),"")) >>> result4 = result3.repartition(1) >>> result5 = result4.sortByKey(False) >>> result6 = result5.map(lambda x:x[0]) >>> result7 = result6.take(5) >>> for a in result7: ... print(a) ...