范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Flink操练(三十二)之自定义键控状态(二)ListState

  0 简介
  ListState[T]保存一个列表,列表里的元素的数据类型为T。基本操作如下: ListState.add(value: T) ListState.addAll(values: java.util.List[T]) ListState.get()返回Iterable[T] ListState.update(values: java.util.List[T])
  ListState需要将某些值存到一个List中(Iterable),意味着缓存的数据不只是一个而是多个值。很多情况下都可以使用,例如计算的数值要包含全天的每一个记录,此时只有将每个记录的值存成一个列表才可以计算。 1.实例
  1.1 实例一
  首先需要先定义一个ListState,然后再重写KeyedProcessFunction中的open方法:     private var itemState : ListState[ItemViewCount] = _      override def open(parameters: Configuration): Unit = {        //命名状态变量的名字和类型       val itemStateDescription: ListStateDescriptor[ItemViewCount] = new ListStateDescriptor[ItemViewCount]("itemState", classOf[ItemViewCount])       itemState = getRuntimeContext.getListState(itemStateDescription)     }
  ListStateDescriptor提供了几种不同的定义方式:
  两个参数分别是ListStateDescriptor的名字和typeClass
  1.2 实例二 package qiuhua; import org.apache.flink.api.common.functions.RichFlatMapFunction; import org.apache.flink.api.common.state.ListState; import org.apache.flink.api.common.state.ListStateDescriptor; import org.apache.flink.api.common.typeinfo.Types; import org.apache.flink.api.java.tuple.Tuple2; import org.apache.flink.configuration.Configuration; import org.apache.flink.shaded.guava18.com.google.common.collect.Lists; import org.apache.flink.util.Collector; import java.util.Collections; import java.util.List;  /**  * @program: bigdata_learn  * @description: 通过ListState求key 出现了 3 次,则需要计算平均值  * @author: Mr.逗  * @create: 2021-09-08 16:18  **/ public class CountAverageWithListState extends RichFlatMapFunction, Tuple2> {     /**      * ValueState : 里面只能存一条元素      * ListState : 里面可以存很多数据      */     private ListState> elementsByKey;      @Override     public void open(Configuration parameters) throws Exception {         super.open(parameters);         //注册状态         ListStateDescriptor> descriptor = new ListStateDescriptor<>                 ("list_state"//状态名字                         , Types.TUPLE(Types.LONG, Types.LONG)//状态存储的数据类型                 );         elementsByKey=getRuntimeContext().getListState(descriptor);     }      @Override     public void flatMap(Tuple2 value, Collector> out) throws Exception {         Iterable> currentState  = elementsByKey.get();//拿到当前key的状态值         //如果状态值没有初始化,则初始化         if(currentState==null)         {             elementsByKey.addAll(Collections.emptyList());         }         //更新状态         elementsByKey.update((List>) value);         //判断,如果当前key出现了3次,则需要计算平均值,并且输出         List> allElements = Lists.newArrayList(currentState);         if (allElements.size()==3)         {             long count=0;             long sum=0;             for(Tuple2 ele:allElements)             {                 count++;                 sum+=ele.f1;             }             double avg=(double)sum/count;             out.collect(Tuple2.of(value.f0,avg));             //清除状态             elementsByKey.clear();         }     } }
  总结
  Flink提供了三种基于key/value的state接口,ListState接口适用于缓存多个值的计算。具体实现之前,因为state必须是基于key,且必须获取getRuntimeContext,state必须同时满足两个条件: 直接基于keyedStream或者由keyedStream转换来的windowedStream 必须继承RichFunction
  实际实现时候,因为windowedStream在scala中不能实现RichWindowFunction,因此在main中使用flatmap间接实现了windowFunction中的功能: val fromTransactionDataStream = watermarkTransaction       .keyBy(_.code)       .window(TumblingEventTimeWindows.of(Time.seconds(10)))        val transaction = fromTransactionDataStream       .apply(new StockTransactionApply)       .keyBy(_._3)       .flatMap(new TransactionStateFlatMapFunction)

SteamDeck掌机定档2月25日发售价格约2522元起据报道,SteamDeck掌机定档2月25日发售,起售价399美元(约合2522元人民币)。据悉,该掌机配备一块7英寸屏幕,分辨率为1280800,支持60Hz刷新率,支持触摸,整最难买的麒麟9000华为5G旗舰再度开卖,花粉比发布新机还开心华为最近两年可把消费者折腾得够呛!旧款旗舰等着等着,不降价反而还买不到了,新款旗舰不支持5G功能竟也是要想方设法抢购,还让人等的望眼欲穿。本来以为入手华为5G旗舰已经无望,谁知最难苹果时隔6年市场份额再登顶中国手机市场VIVOOPPO位列二三名封面新闻记者欧阳宏宇1月27日,研究公司CounterPoint公布的最新数据显示,2021年第四季度,苹果以23的市场份额成为中国第一大智能手机供应商,这是苹果自2015年以来首雷军表示,他自己是乔布斯的忠实粉丝,他没想成为什么乔布斯第二冰雪2022智能手机最大的缺点就是用电量非常大,所以小米手机要采用大电池,在正常电池上加大30,同时还设计了很多省电模式,以达到更理想的省电效果。同时,雷军还希望小米手机是一部高性东芝存储器变身铠侠,发力存储设备屡屡获奖,这两款你一定用得到2019年10月,东芝存储器改名为铠侠,卸下东芝名号的压力,铠侠重整旗鼓再出发。这次铠侠的4款产品在5个科技数码类平台上夺得8大奖项,收获颇丰。凭实力做自己,牛年牛劲大发,虎年开门布局燃料电池相关设备行业威唐工业(300707。SZ)拟取得律致新能源1。85股权智通财经APP讯,威唐工业(300707。SZ)公告,公司全资子公司无锡威唐产业投资有限公司(简称威唐产投)与金浦智能基金通临智创拟向律致新能源共同投资合计2000万元,其中威唐产没网你能撑多久?蒲公英X4C路由器,解决打工人学生党用网需求对于家庭用户来说,想要获得稳定的上网体验,那当然是安装宽带了。但是对于短租用户,或是宿舍不让拉网线的学生群体来说,要想多设备都能够获得稳定的上网体验,那还得用4G路由器。也正是因为Mate40pro现在依然能打,2年的时间,现在处于什么水平Mate40pro在刚刚推出的时候,就在国内手机圈子里引起了一阵轰动。应用了最为强劲的麒麟9000系列处理器,无论是使用时都要丝滑程度,还是摄像内存方面都表现得极为出众。这台机器是苹果国内登顶被热议,这两大原因缺一不可一点征兆都没有,苹果突然成为全网热议的焦点。只因为新浪科技的一个话题,这个话题叫做苹果6年来首次登顶中国手机市场。截至发稿时(1月27日15点35分)这个话题的当日阅读量高达914国货当自强,自研芯片超乎想象,中兴AX5400Pro实际体验前言每当有人提到自研芯片,5G技术等名词时,很多人脑海中的第一反应肯定是华为。其实我们都忽视了中兴,这个和华为有着同样强劲的自研能力,一直为中国科学技术发展默默贡献的企业。最近,中一加BudsPro新增2022年吾皇万睡虎年限定主题一加社区管理员一加蓝帅宣布一加BudsPro新增2022年吾皇万睡虎年限定主题!据了解,一加BudsPro的耳机与充电盒通体由NCVM工艺打造,呈现出不锈钢般金属光泽,极具机械感。
曲水流觞,文人雅集周末去了一趟百花洲,碰上了文人雅集会,有各种小物件,工艺品,还有模仿西安不倒翁姐姐的人在表演,一路走过去,看到灯笼高高挂,柳叶轻轻摆动,有的叶子黄了,轻轻的飘下来,很是好看。往深了少壮不努力,老大徒伤悲有很多小孩现在不想上学,但是长大后他一定会后悔。前两天和家里弟弟聚餐。提到小妹妹上学的事情,她因为是留守儿童,没有爸爸妈妈管她,所以很叛逆,说他一句就像点了炸药包,很难说的明白,而户外拉杆音响哪家强?途曼音箱测试购买理由因为家里老人要跳广场舞,有一个带拉杆的音箱,携带比较方便。而且它的功率大,声音够响蓝色和灰色,随你选择。为什么要买个便携式的拉杆音箱呢?说来话长,主要因为家里老人有次提这个这样的耳机你值得拥有之前我用的是有线的耳机,很便宜,但是携带的时候在包里总是变成一团麻,很是烦人。如下图所示,而且说话的地方还容易坏。没办法。我就放弃了这个耳机。后来通过网上了解,有无线蓝牙耳机,就想实拍吉利ICON粉色版,定位小型SUV,配三缸48V轻混实力如何?国产品牌中高颜值车型越来越多,作为一款小型SUV,吉利ICON当初刚亮相就吸引了很多眼球。作为一款指导售价9。9813。2万的车型,性价比中规中矩,但依旧有人愿意买单。作为一个专业成都车展欧拉首款纯电SUV,命名樱桃猫最高续航600km!提到欧拉汽车,我们第一时间能够想到黑猫白猫这样的车型。根据欧拉官方信息显示,在今年8月29号正式开展的成都车展上,家族首款纯电动SUV会跟我们正式见面,新车名字非常可爱,叫做樱桃猫五菱征途实拍1。5L开拓型,卖6。28万配1。5L自吸引擎!皮卡车在国内虽然相对冷门一些,但既能够满足代步又能够满足拉货,作为一个生产力工具,功能性很强。今天跟大家聊的这款车叫做五菱征途,价格上足够亲民,厂商指导售价在5。886。28万之间成都车展马自达推CX30EV,续航450km最大马力217匹!传统车企,为了应对未来趋势,很多家族经典车型都经历了油改电,虽然外观看上去不算太协调,但却是踏出新市场的第一步。在即将开展的成都车展中,马自达将推出CX30EV,新车续航能力将会在丰田CHR基于TNGA架构打造,起售14。18万提供双擎版本车型!对于刚出来上班或者一家三口来讲,并不需要买多么大的车型,很多时候精致的小型SUV更灵活,在一线城市穿梭无论是停车还是倒车都更加方便。就比如说基于TNGA架构打造的丰田CHR,在同级伊兰特试驾1。5LGLX精英版,动力佛系提供多点电喷技术!时尚高颜值的东西,在市场中往往会备受追捧。对于北京现代伊兰特大多数人并不陌生,前几代车型做过出租车,名字上国产后有过变动,但目前新款叫回了我们熟悉的伊兰特。价格上依旧主打消费级市场宝马6系GT试驾630i豪华设计套装版,配2。0T大掀背实力如何?进口版本的宝马车,在国内很受欢迎,宝马6系GT就是其中之一,定位上是一款中大型车,本身采用掀背式风格设计,价格上目前厂商指导售价在58。3968。39万之间,并不便宜。最近我试驾了