首页 > 其他分享 >今日总结

今日总结

时间:2024-01-19 22:55:08浏览次数:25  
标签:总结 category price rdd Fruit Vegetable 今日 lambda


 

要实现这一目标,必须将rdd转换为一对rdd,以使其只包含键值对/元组。

 

category_price_rdd = rdd.map(lambda x: (x[1],x[2]))
category_price_rdd.collect()
-----------------------------------------------------------------
[(‘Fruit’, 200), (‘Fruit’, 24), (‘Fruit’, 56), (‘Vegetable’, 103), (‘Vegetable’, 34)]

 

此处应用map函数获取所需格式的rdd。使用文本格式运行时,形成的RDD有很多字符串。然后使用map函数将其转换为所需格式。

 

所以现在的category_price_rdd中包含产品类别和售价。

 

如果想将关键类别进行约归并统计总价,那么可以这样做:

 

category_total_price_rdd = category_price_rdd.reduceByKey(lambda x,y:x+y)
category_total_price_rdd.collect()
---------------------------------------------------------[(‘Vegetable’, 137), (‘Fruit’, 280)]

 

6. Group By Key函数:

 

与reduceByKey相似,Group By Key只是把所有元素放入迭代器中,并不会reduce。举个例子,如果想保留关键类别和所有产品你的价值,可以使用此函数。

 

再次使用map函数,获取所需形式的数据。

 

data = [('Apple','Fruit',200),('Banana','Fruit',24),('Tomato','Fruit',56),('Potato','Vegetable',103),('Carrot','Vegetable',34)]
rdd = sc.parallelize(data,4)
category_product_rdd = rdd.map(lambda x: (x[1],x[0]))
category_product_rdd.collect()
------------------------------------------------------------
[('Fruit', 'Apple'),  ('Fruit', 'Banana'),  ('Fruit', 'Tomato'),  ('Vegetable', 'Potato'),  ('Vegetable', 'Carrot')]

 

然后像下面这样使用groupByKey:

 

grouped_products_by_category_rdd = category_product_rdd.groupByKey()
findata = grouped_products_by_category_rdd.collect()
for data in findata:
    print(data[0],list(data[1]))
------------------------------------------------------------
Vegetable ['Potato', 'Carrot']
Fruit ['Apple', 'Banana', 'Tomato']

 

此处groupByKey函数运行,其返回该类别中的类别和产品列表。

 

 

 

操作基础

 

 

 

 

至此已经筛选了数据,并在其上映射了一些函数。接下来要完成计算。

 

现在希望获取本地计算机上的数据或将其保存到文件中,或者以excel或任何可视化工具中的某些图形的形式显示结果。

 

为此需要进行一些操作。

 

完整操作列表:http://spark.apache.org/docs/latest/rdd-programming-guide.html#actions

 

笔者倾向使用的一些常见操作如下:

 

1. collect

 

上文已多次使用过此操作。该操作将整个RDD返回到应用程序中。

 

2. reduce

 

使用函数func(该函数接受两个参数并返回一个)来聚合数据集的元素。该函数可交换和组合,以便并行进行正确计算。

 

rdd = sc.parallelize([1,2,3,4,5])
rdd.reduce(lambda x,y : x+y)
---------------------------------
15

 

3. take

 

有时需要查看RDD包含内容,但无需获取内存中的所有元素。take操作返回包含RDD前n个元素的列表。

 

rdd = sc.parallelize([1,2,3,4,5])
rdd.take(3)
---------------------------------
[1, 2, 3]

 

4. takeOrdered

 

takeOrdered操作使用自然顺序或自定义比较器返回RDD的前n个元素。

 

rdd = sc.parallelize([5,3,12,23])
# descending order
rdd.takeOrdered(3,lambda s:-1*s)
----
[23, 12, 5]
rdd = sc.parallelize([(5,23),(3,34),(12,344),(23,29)])
# descending order
rdd.takeOrdered(3,lambda s:-1*s[1])
---
[(12, 344), (3, 34), (23, 29)]

 

至此所有的基础都已涉及,接下来回到wordcount示例。

标签:总结,category,price,rdd,Fruit,Vegetable,今日,lambda
From: https://www.cnblogs.com/zhaoyueheng/p/17975812

相关文章

  • day 04总结
    JDKJREJVM的关系->JDK=JRE+JAVA开发工具->JRE=JVM+核心类库环境变量的作用:(分为用户变量和系统变量)->是为了在dos的任意目录可以去使用java和javac命令JAVA编写步骤->编写java源码->javac编译为.class文件(字节码文件)->java运行,本质是将.class文件......
  • 图像采集和多缓存项目中的若干总结
    遇到的问题:1.图像滚动:原因:没有读出/写入整幅图像导致;2.图像错位:原因:在读出当前帧前,已向fifo里写入了若干数据;(合理的设置hdmi的启动可以解决这个问题);3.图像撕裂:原因:读到了写入区域;缓存多帧数可以解决这个问题;4.缓存后的图像闪动:原因:没有准确的设置启动,导致不合理的地址跳跃;5.6......
  • 2023 年年度总结
    \(2023\)的最后一天了,该总结一下这一年了。这一年,其实发生了很多,大运会,亚运会,再到巴以冲突、美国夏威夷毛伊岛大火、基辛格去世、杨紫琼奥斯卡封后、梅西获得第八个金球奖等,相信每个人心中都有自己的\(2023\)热点大事件。对于我来说,\(csp2023\)成为了最独特的回忆。虽然最终......
  • 2024.1.19寒假每日总结10
    算法题:2809.使数组和小于等于x的最少时间-力扣(LeetCode)spark广播器场景:本地集合对象和分布式集合对象(RDD)进行关联的时候需要将本地集合对象封装为广播变量可以节省:1.网络IO的次数2.Executor的内存占用 ......
  • npm 的使用总结
    一、新域名官方地址:https://npmmirror.com镜像地址:https://registry.npmmirror.com老域名:http://npm.taobao.org和http://registry.npm.taobao.org将在2022.06.30号正式下线和停止DNS解析原来的 registry.npm.taobao.org 已替换为 registry.npmmirror.c......
  • C#的数据类型总结:decimal ,double,float的区别
    原文链接:https://www.cnblogs.com/mrbug/p/6904039.htmldouble虽然64位,但其精度低,故其可以表示的范围大decimal虽然是128位,但由于其用了较多的位来表示其精度,只好牺牲表示范围了.1>三者是精度不同的浮点数,如下图参见:https://docs.microsoft.com/zh-cn/dotnet/articles/c......
  • 1.19每日总结
    Python3解释器Linux/Unix的系统上,一般默认的python版本为2.x,我们可以将python3.x安装在 /usr/local/python3 目录中。安装完成后,我们可以将路径 /usr/local/python3/bin 添加到您的Linux/Unix操作系统的环境变量中,这样您就可以通过shell终端输入下面的命令来启动......
  • vue3 之 问题总结(一)
    Vue3官网:https://cn.vuejs.org/guide/introduction.html一、为什么要使用ref?使用ref来创建响应式数据,当你在模板中使用了一个ref,然后改变了这个ref的值时,Vue会自动检测到这个变化,并且相应地更新DOM。在标准的JavaScript中,检测普通变量的访问或修改是行......
  • 竹永康在科锐待岗第3天工作总结
    今日研读了《高性能MySQL》一书中的第7.10章节:MySQL高级特性之全文索引,从中学习到了一些专业技能知识。总结如下。@目录全文索引MyISAM全文索引自然语言的全文索引布尔全文索引全文索引的限制和替代方案全文索引的配置和优化全文索引全文索引是为"通过关键字的匹配来进行相......
  • ThreadLocal 在实战场景下的内存泄漏、逻辑混乱问题总结
    前言很早之前虽然看过ThreadLocal的源码,但是对于真实业务场景下可能存在的问题没有做过总结,刚好前几天在分析Mybatis内存泄漏的问题,想着ThreadLocal不是也可能会发生内存泄漏吗?于是乎本文出现了。本文相关博客1:ThreadLocal还存在内存泄漏?源码级别解读2:高质量实现单文件......