2024.6.7

news/2025/1/22 12:18:16/文章来源:https://www.cnblogs.com/258-333/p/18238058

18万条数据

public class HotCategoryTop10_3 {public static void main(String[] args) {// TODO 搭建Spark的运行环境SparkConf conf = new SparkConf();conf.setAppName("HotCategoryTop10");conf.setMaster("local[*]"); // Yarn : Spark On YarnJavaSparkContext jsc = new JavaSparkContext(conf);// TODO 将文件作为数据源,对接RDD//      如果当前环境是Yarn,那么相对路径指向的就是 HDFSjsc.textFile("data/user_visit_action.txt").filter(line -> {final String[] ss = line.split("_");return "null".equals(ss[5]);}).flatMap(line -> {final String[] ss = line.split("_");if (!"-1".equals(ss[6])) {// TODO 点击数据return Arrays.asList(new HotCategory(ss[6], 1L, 0L, 0L)).iterator();} else if (!"null".equals(ss[8])) {// TODO 下单数据final String[] ids = ss[8].split(",");List<HotCategory> objs = new ArrayList<>();for (String id : ids) {objs.add( new HotCategory(id, 0L, 1L, 0L) );}return objs.iterator();} else {// TODO 支付数据final String[] ids = ss[10].split(",");List<HotCategory> objs = new ArrayList<>();for (String id : ids) {objs.add( new HotCategory(id, 0L, 0L, 1L) );}return objs.iterator();}}).mapToPair(obj -> new Tuple2<>(obj.getId(), obj)).reduceByKey((obj1, obj2) -> {obj1.setClickCount(obj1.getClickCount() + obj2.getClickCount());obj1.setOrderCount(obj1.getOrderCount() + obj2.getOrderCount());obj1.setPayCount(obj1.getPayCount() + obj2.getPayCount());return obj1;}).map(kv -> kv._2).sortBy(obj -> obj, true, 2).take(10).forEach(System.out::println);jsc.close();}
}// TODO 自定义数据对象
//     1. 实现可序列化接口
//     2. 遵循Bean规范
//     3. 提供无参和全参的构造方法
//     4. 重写toString方法
//     5. 实现可比较的接口,重写比较方法
class HotCategory implements Serializable, Comparable<HotCategory> {private String id;private Long clickCount;private Long orderCount;private Long payCount;public HotCategory(String id, Long clickCount, Long orderCount, Long payCount) {this.id = id;this.clickCount = clickCount;this.orderCount = orderCount;this.payCount = payCount;}public HotCategory() {}@Overridepublic int compareTo(HotCategory other) {if ( this.clickCount > other.clickCount ) {return -1;} else if ( this.clickCount < other.clickCount ) {return 1;} else {if ( this.orderCount > other.orderCount ) {return -1;} else if ( this.orderCount < other.orderCount ) {return 1;} else {return (int)(other.payCount - this.payCount);}}}public String getId() {return id;}public void setId(String id) {this.id = id;}public Long getClickCount() {return clickCount;}public void setClickCount(Long clickCount) {this.clickCount = clickCount;}public Long getOrderCount() {return orderCount;}public void setOrderCount(Long orderCount) {this.orderCount = orderCount;}public Long getPayCount() {return payCount;}public void setPayCount(Long payCount) {this.payCount = payCount;}@Overridepublic String toString() {return "HotCategory{" +"id='" + id + '\'' +", clickCount=" + clickCount +", orderCount=" + orderCount +", payCount=" + payCount +'}';}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/721663.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android Media Framework(三)OpenMAX API阅读与分析

这篇文章我们将聚焦Control API的功能与用法,为实现OMX Core、Component打下坚实的基础。1、OMX_Core.h OMX Core在OpenMAX IL架构中的位置位于IL Client与实际的OMX组件之间,OMX Core提供了两组API给IL Client使用,一组API用于管理OMX组件,另一组API用于操作/使用创建的OM…

Java (Redis)

前沿 让我们来学习下Redis吧官网下载客户端 https://app.redislabs.com/#/rlec-downloads什么是 Redis?Redis(Remote Dictionary Server)是一个开源的、高性能的、基于内存的键值存储系统。它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。由于其基于内存的设…

NSSCTF——crypto

[鹤城杯 2021]easy_crypto [强网拟态 2021]拟态签到题 [SWPUCTF 2021 新生赛]crypto8[SWPUCTF 2021 新生赛]crypto7[SWPUCTF 2021 新生赛]crypto6[SWPUCTF 2021 新生赛]ez_caesar[SWPUCTF 2021 新生赛]…

攻防世界

misc 1.MeowMeowMeow 首先是是一个猫猫的图片,习惯先看看属性,放入hex中,发现一些特殊的符合继续往上翻,发现有一段密码用base64解码,得到提示Do you know what Ascii art is? Hint:I put the serect in a 01 Ascii art.像这样的艺术字,发现下面编码有点像字母 解出来是…

__init__.py

在Python的项目中,通常会看到__init__.py文件,当我们导入这个项目时,会优先执行该项目的__init__.py文件。当我们导入这个项目。或者这个项目的子模块时,都会优先执行该项目下的__init__.py文件。 该过程有缓存机制,连续导入一个父模块的不同子模块时,只会执行一次父模块…

PHP历理 PhpStorm的设置PHP版本

打开 文件 -> 设置 -> PHP -> 选择对应的PHP版本

客观谈谈上一中 or 凤城

首先是一个问题,为什么在一中各方面似乎都要强于凤城的情况下,还是会有许多人想去上凤城呢? 很简单,凤城给的实在是太多了( 只要你足够优秀,凤城似乎可以满足你大部分要求,有很多优惠条件,并且老师水平也不一定比一中差多少,还有高校专项计划诱人的降分,助力实现梦想…

AD给线周围铺铜只显示框的问题

如下图所示,想给直角线加斜边的铜,但是加完之后只有框没有铜(也选择了网络)解决方法如下: 点击这个框,在属性里面取消勾选Remove Islands Less Than 再选择Pour Over All Same Net Objects即可

Dragon_Knight_CTF-stack(栈迁移)

Dragon_Knight_CTF-stack(栈迁移) 程序的保护情况如下,可以看到没有开启pie保护 Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x3fe000)可以看道main函数也很简洁,只有一个0x10大小的溢出,程序…

成为MySQL DBA后,再看ORACLE数据库(七、日志体系)

说起数据库的日志,一般有redo日志、归档日志、错误日志、审计日志等,不同的数据库为了满足其特定的功能会有不同类型的日志。在ORACLE的日常运维中,可能接触得最多的就是redo日志、归档日志、告警日志、闪回日志这几种日志。在ORACLE知识体系中,一般把redo、undo、checkpoi…

bitbucket无法使用ssh连接

原因 如图所示,需要开启pipelines而开启pipelines需要通过Twilio Authy Authenticator这个软件。然而国内手机号收不到这玩意的验证码。未解决 放弃了,直接用http