国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

大數(shù)據(jù)-玩轉(zhuǎn)數(shù)據(jù)-Flink 網(wǎng)站UV統(tǒng)計(jì)

這篇具有很好參考價(jià)值的文章主要介紹了大數(shù)據(jù)-玩轉(zhuǎn)數(shù)據(jù)-Flink 網(wǎng)站UV統(tǒng)計(jì)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、說明

在實(shí)際應(yīng)用中,我們往往會(huì)關(guān)注,到底有多少不同的用戶訪問了網(wǎng)站,所以另外一個(gè)統(tǒng)計(jì)流量的重要指標(biāo)是網(wǎng)站的獨(dú)立訪客數(shù)(Unique Visitor,UV)。

二、數(shù)據(jù)準(zhǔn)備

package com.lyh.flink06;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserBehavior {
    private Long userId;
    private Long itemId;
    private Integer categoryId;
    private String behavior;
    private Long timestamp;
}

三、思路

對(duì)于UserBehavior數(shù)據(jù)源來說,我們直接可以根據(jù)userId來區(qū)分不同的用戶。
將userid放到SET集合里面,統(tǒng)計(jì)集合長(zhǎng)度,便可以統(tǒng)計(jì)到網(wǎng)站的訪客數(shù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-680671.html

四、代碼

package com.lyh.flink06;

import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.functions.KeyedProcessFunction;
import org.apache.flink.util.Collector;

import javax.naming.ldap.HasControls;
import java.util.HashSet;
import java.util.Set;

public class PUcount {
    public static void main(String[] args) throws Exception {
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        env.setParallelism(2);
        env.readTextFile("input/UserBehavior.csv")
                .map(line -> {
                    String[] data = line.split(",");
                    return new UserBehavior(
                            Long.valueOf(data[0]),
                            Long.valueOf(data[1]),
                            Integer.valueOf(data[2]),
                            data[3],
                            Long.valueOf(data[4])
                    );
                }).filter(ub ->"pv".equals(ub.getBehavior()))
                .keyBy(UserBehavior::getBehavior)
                .process(new KeyedProcessFunction<String, UserBehavior, String>() {
                    Set<Long> userIdset = new HashSet<>();
                    @Override
                    public void processElement(UserBehavior value,
                                               Context ctx,
                                               Collector<String> out) throws Exception {
                        userIdset.add(value.getUserId());
                        out.collect("uv:"+ userIdset.size());



                    }
                }).print();
        env.execute();

    }
}

到了這里,關(guān)于大數(shù)據(jù)-玩轉(zhuǎn)數(shù)據(jù)-Flink 網(wǎng)站UV統(tǒng)計(jì)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 大數(shù)據(jù)-玩轉(zhuǎn)數(shù)據(jù)-Flink營(yíng)銷對(duì)賬

    大數(shù)據(jù)-玩轉(zhuǎn)數(shù)據(jù)-Flink營(yíng)銷對(duì)賬

    在電商網(wǎng)站中,訂單的支付作為直接與營(yíng)銷收入掛鉤的一環(huán),在業(yè)務(wù)流程中非常重要。對(duì)于訂單而言,為了正確控制業(yè)務(wù)流程,也為了增加用戶的支付意愿,網(wǎng)站一般會(huì)設(shè)置一個(gè)支付失效時(shí)間,超過一段時(shí)間不支付的訂單就會(huì)被取消。另外,對(duì)于訂單的支付,我們還應(yīng)保證用

    2024年02月11日
    瀏覽(20)
  • 大數(shù)據(jù)-玩轉(zhuǎn)數(shù)據(jù)-Flink 容錯(cuò)機(jī)制

    大數(shù)據(jù)-玩轉(zhuǎn)數(shù)據(jù)-Flink 容錯(cuò)機(jī)制

    在分布式架構(gòu)中,當(dāng)某個(gè)節(jié)點(diǎn)出現(xiàn)故障,其他節(jié)點(diǎn)基本不受影響。在 Flink 中,有一套完整的容錯(cuò)機(jī)制,最重要就是檢查點(diǎn)(checkpoint)。 在流處理中,我們可以用存檔讀檔的思路,把之前的計(jì)算結(jié)果做個(gè)保存,這樣重啟之后就可以繼續(xù)處理新數(shù)據(jù)、而不需要重新計(jì)算了。所以

    2024年02月07日
    瀏覽(22)
  • 大數(shù)據(jù)-玩轉(zhuǎn)數(shù)據(jù)-Flink RedisSink

    大數(shù)據(jù)-玩轉(zhuǎn)數(shù)據(jù)-Flink RedisSink

    具體版本根據(jù)實(shí)際情況確定 參見大數(shù)據(jù)-玩轉(zhuǎn)數(shù)據(jù)-Redis 安裝與使用 可以根據(jù)要寫入的redis的不同數(shù)據(jù)類型進(jìn)行調(diào)整

    2024年02月13日
    瀏覽(16)
  • 大數(shù)據(jù)-玩轉(zhuǎn)數(shù)據(jù)-Flink狀態(tài)編程(上)

    大數(shù)據(jù)-玩轉(zhuǎn)數(shù)據(jù)-Flink狀態(tài)編程(上)

    有狀態(tài)的計(jì)算是流處理框架要實(shí)現(xiàn)的重要功能,因?yàn)樯詮?fù)雜的流處理場(chǎng)景都需要記錄狀態(tài),然后在新流入數(shù)據(jù)的基礎(chǔ)上不斷更新狀態(tài)。 SparkStreaming在狀態(tài)管理這塊做的不好, 很多時(shí)候需要借助于外部存儲(chǔ)(例如Redis)來手動(dòng)管理狀態(tài), 增加了編程的難度。 Flink的狀態(tài)管理是它的優(yōu)

    2024年02月09日
    瀏覽(91)
  • 大數(shù)據(jù)-玩轉(zhuǎn)數(shù)據(jù)-Flink定時(shí)器

    基于處理時(shí)間或者事件時(shí)間處理過一個(gè)元素之后, 注冊(cè)一個(gè)定時(shí)器, 然后指定的時(shí)間執(zhí)行. Context和OnTimerContext所持有的TimerService對(duì)象擁有以下方法: currentProcessingTime(): Long 返回當(dāng)前處理時(shí)間 currentWatermark(): Long 返回當(dāng)前watermark的時(shí)間戳 registerProcessingTimeTimer(timestamp: Long): Unit 會(huì)注

    2024年02月10日
    瀏覽(20)
  • 大數(shù)據(jù)-玩轉(zhuǎn)數(shù)據(jù)-Flink惡意登錄監(jiān)控

    大數(shù)據(jù)-玩轉(zhuǎn)數(shù)據(jù)-Flink惡意登錄監(jiān)控

    對(duì)于網(wǎng)站而言,用戶登錄并不是頻繁的業(yè)務(wù)操作。如果一個(gè)用戶短時(shí)間內(nèi)頻繁登錄失敗,就有可能是出現(xiàn)了程序的惡意攻擊,比如密碼暴力破解。 因此我們考慮,應(yīng)該對(duì)用戶的登錄失敗動(dòng)作進(jìn)行統(tǒng)計(jì),具體來說,如果同一用戶(可以是不同IP)在2秒之內(nèi)連續(xù)兩次登錄失敗,就

    2024年02月07日
    瀏覽(14)
  • 大數(shù)據(jù)-玩轉(zhuǎn)數(shù)據(jù)-Flink時(shí)間滾動(dòng)動(dòng)窗口

    大數(shù)據(jù)-玩轉(zhuǎn)數(shù)據(jù)-Flink時(shí)間滾動(dòng)動(dòng)窗口

    在流處理應(yīng)用中,數(shù)據(jù)是連續(xù)不斷的,因此我們不可能等到所有數(shù)據(jù)都到了才開始處理。當(dāng)然我們可以每來一個(gè)消息就處理一次,但是有時(shí)我們需要做一些聚合類的處理,例如:在過去的1分鐘內(nèi)有多少用戶點(diǎn)擊了我們的網(wǎng)頁(yè)。在這種情況下,我們必須定義一個(gè)窗口,用來收集

    2024年02月11日
    瀏覽(22)
  • 大數(shù)據(jù)-玩轉(zhuǎn)數(shù)據(jù)-Flink狀態(tài)后端(下)

    大數(shù)據(jù)-玩轉(zhuǎn)數(shù)據(jù)-Flink狀態(tài)后端(下)

    每傳入一條數(shù)據(jù),有狀態(tài)的算子任務(wù)都會(huì)讀取和更新狀態(tài)。由于有效的狀態(tài)訪問對(duì)于處理數(shù)據(jù)的低延遲至關(guān)重要,因此每個(gè)并行任務(wù)(子任務(wù))都會(huì)在本地維護(hù)其狀態(tài),以確保快速的狀態(tài)訪問。 狀態(tài)的存儲(chǔ)、訪問以及維護(hù),由一個(gè)可插入的組件決定,這個(gè)組件就叫做狀態(tài)后端(

    2024年02月09日
    瀏覽(21)
  • 大數(shù)據(jù)-玩轉(zhuǎn)數(shù)據(jù)-Flink-Transform

    大數(shù)據(jù)-玩轉(zhuǎn)數(shù)據(jù)-Flink-Transform

    轉(zhuǎn)換算子可以把一個(gè)或多個(gè)DataStream轉(zhuǎn)成一個(gè)新的DataStream.程序可以把多個(gè)復(fù)雜的轉(zhuǎn)換組合成復(fù)雜的數(shù)據(jù)流拓?fù)? 2.1、map(映射) 將數(shù)據(jù)流中的數(shù)據(jù)進(jìn)行轉(zhuǎn)換, 形成新的數(shù)據(jù)流,消費(fèi)一個(gè)元素并產(chǎn)出一個(gè)元素 2.2、filter(過濾) 根據(jù)指定的規(guī)則將滿足條件(true)的數(shù)據(jù)保留,不

    2024年02月13日
    瀏覽(18)
  • 大數(shù)據(jù)-玩轉(zhuǎn)數(shù)據(jù)-FLINK-從kafka消費(fèi)數(shù)據(jù)

    大數(shù)據(jù)-玩轉(zhuǎn)數(shù)據(jù)-Kafka安裝 運(yùn)行本段代碼,等待kafka產(chǎn)生數(shù)據(jù)進(jìn)行消費(fèi)。

    2024年02月14日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包