中文AV岛国无码免费播放

    <object id="hatzn"><option id="hatzn"><mark id="hatzn"></mark></option></object>
    <object id="hatzn"></object>
    <pre id="hatzn"></pre>

  1. <center id="hatzn"><em id="hatzn"><track id="hatzn"></track></em></center>

    <del id="hatzn"><small id="hatzn"><samp id="hatzn"></samp></small></del><center id="hatzn"><small id="hatzn"><track id="hatzn"></track></small></center>
  2. <center id="hatzn"><ol id="hatzn"><p id="hatzn"></p></ol></center>

    <center id="hatzn"><em id="hatzn"></em></center>
    侵權投訴

    實時數據體系建設的總體方案的三部分

    2020-05-31 11:02 ? 次閱讀

    隨著互聯網的發展進入下半場,數據的時效性對企業的精細化運營越來越重要, 商場如戰場,在每天產生的海量數據中,如何能實時有效的挖掘出有價值的信息, 對企業的決策運營策略調整有很大幫助。

    此外,隨著 5G 技術的成熟、廣泛應用, 對于工業互聯網、物聯網等數據時效性要求非常高的行業,企業就更需要一套完整成熟的實時數據體系來提高自身的行業競爭力。

    本文從上述現狀及實時數據需求出發,結合工業界案例、筆者的實時數據開發經驗, 梳理總結了實時數據體系建設的總體方案,本文主要分為三個部分:

    第一部分主要介紹了當下在工業界比較火熱的實時計算引擎 Flink 在實時數據體系建設過程中主要的應用場景及對應解決方案;

    第二部分從實時數據體系架構、實時數據模型分層、實時數據體系建設方式、流批一體實時數據架構發展等四個方面思考了實時數據體系的建設方案;

    第三部分則以一個具體案例介紹如何使用 Flink SQL 完成實時數據統計類需求。

    一、Flink 實時應用場景

    目前看來,Flink 在實時計算領域內的主要應用場景主要可分為四類場景, 分別是實時數據同步、流式 ETL、實時數據分析和復雜事件處理,具體的業務場景和對應的解決方案可詳細研究下圖, 文字層面不再詳述。

    二、實時數據體系架構

    實時數據體系大致分為三類場景:流量類、業務類和特征類,這三種場景各有不同。

    在數據模型上,流量類是扁平化的寬表,業務數倉更多是基于范式的建模,特征數據是 KV 存儲;

    從數據來源區分,流量數倉的數據來源一般是日志數據,業務數倉的數據來源是業務 binlog 數據,特征數倉的數據來源則多種多樣;

    從數據量而言,流量和特征數倉都是海量數據,每天十億級以上,而業務數倉的數據量一般每天百萬到千萬級;

    從數據更新頻率而言,流量數據極少更新,則業務和特征數據更新較多,流量數據一般關注時序和趨勢,業務數據和特征數據關注狀態變更;

    在數據準確性上,流量數據要求較低,而業務數據和特征數據要求較高。

    1、實時數據體系整體架構

    整個實時數據體系架構分為五層,分別是接入層,存儲層,計算層、平臺層和應用層,上圖只是整體架構的概要圖,每一層具體要做的事情,接下來通過文字來詳述。

    1)接入層:該層利用各種數據接入工具收集各個系統的數據,包括 binlog 日志、埋點日志、以及后端服務日志,數據會被收集到 Kafka 中;這些數據不只是參與實時計算,也會參與離線計算,保證實時和離線的原始數據是統一的;

    2)存儲層:該層對原始數據、清洗關聯后的明細數據進行存儲,基于統一的實時數據模型分層理念,將不同應用場景的數據分別存儲在 Kafka、HDFS、Kudu、 Clickhouse、Hbase、Redis、Mysql 等存儲引擎中,各種存儲引擎存放的具體的數據類型在實時數據模型分層部分會詳細介紹;

    3)計算層:計算層主要使用 Flink、Spark、Presto 以及 ClickHouse 自帶的計算能力等四種計算引擎,Flink 計算引擎主要用于實時數據同步、 流式 ETL、關鍵系統秒級實時指標計算場景,Spark SQL 主要用于復雜多維分析的準實時指標計算需求場景,Presto 和 ClickHouse 主要滿足多維自助分析、對查詢響應時間要求不太高的場景;

    4)平臺層:在平臺層主要做三個方面的工作,分別是對外提供統一查詢服務、元數據及指標管理、數據質量及血緣;

    5)應用層:以統一查詢服務對各個業務線數據場景進行支持,業務主要包括實時大屏、實時數據產品、實時 OLAP、實時特征等。

    其中,平臺層詳細工作如下:

    統一查詢服務支持從底層明細數據到聚合層數據的查詢,支持以SQL化方式查詢Redis、Hbase等KV存儲中的數據;

    元數據及指標管理:主要對實時的Kafka表、Kudu表、Clickhouse表、Hive表等進行統一管理,以數倉模型中表的命名方式規范表的命名,明確每張表的字段含義、使用方,指標管理則是盡量通過指標管理系統將所有的實時指標統一管理起來,明確計算口徑,提供給不同的業務方使用;

    數據質量及血緣分析:數據質量分為平臺監控和數據監控兩個部分,血緣分析則主要是對實時數據依賴關系、實時任務的依賴關系進行分析。

    平臺監控部分一是對任務運行狀態進行監控,對異常的任務進行報警并根據設定的參數對任務進行自動拉起與恢復,二是針對 Flink 任務要對 Kafka 消費處理延遲進行監控并實時報警。

    數據監控則分為兩個部分:

    首先流式 ETL 是整個實時數據流轉過程中重要的一環,ETL 的過程中會關聯各種維表,實時關聯時,定時對沒有關聯上的記錄上報異常日志到監控平臺,當數量達到一定閾值時觸發報警;

    其次,部分關鍵實時指標采用了 lambda 架構,因此需要對歷史的實時指標與離線 hive 計算的數據定時做對比,提供實時數據的數據質量監控,對超過閾值的指標數據進行報警。

    為了配合數據監控,需要做實時數據血緣,主要是梳理實時數據體系中數據依賴關系,以及實時任務的依賴關系,從底層ODS 到 DW 再到 DM,以及 DM 層被哪些模型用到, 將整個鏈條串聯起來,這樣做在數據/任務主動調整時可以通知關聯的下游,指標異常時借助血緣定位問題,同時基于血緣關系的分析,我們也能評估數據的應用價值,核算數據的計算成本。

    2、實時數據模型分層

    離線數倉考慮到效率問題,一般會采取空間換時間的方式,層級劃分會比較多;實時數倉考慮到實時性問題,分層則越少越好,另外也減少了中間流程出錯的可能性,因此將其分為四層。

    1)ODS 層

    操作數據層,保存原始數據,對非結構化的數據進行結構化處理,輕度清洗,幾乎不刪除原始數據。

    該層的數據主要來自業務數據庫的 binlog 日志、埋點日志和應用程序日志。

    對于 binlog 日志通過 canal 監聽,寫到消息隊列 Kafka 中,對應于埋點和應用程序日志,則通過 Filebeat 采集 nginx 和 tomcat 日志,上報到Kafka 中。

    除了存儲在 Kafka 中,同時也會對業務數據庫的 binlog 日志通過 Flink 寫入 HDFS、Kudu 等存儲引擎,落地到 5min Hive 表,供查詢明細數據,同時也提供給離線數倉,做為其原始數據;另外,對于埋點日志數據,由于 ODS 層是非結構化的,則沒有必要落地。

    2)DWD 層

    實時明細數據層,以業務過程作為建模驅動,基于每個具體的業務過程特點,構建最細粒度的明細層事實表;可以結合企業的數據使用特點,將明細事實表的某些重要維度屬性字段做適當冗余,也即寬表化處理。

    該層的數據來源于 ODS 層,通過簡單的 Streaming ETL 后得到,對于 binlog 日志的處理主要進行簡單的數據清洗、處理數據漂移,以及可能對多個 ODS 層的表進行 Streaming Join,對流量日志主要是做一些通用ETL 處理,將非結構化的數據結構化,關聯通用的維度字段。

    該層的數據存儲在消息隊列 Kafka 中,同時也會用 Flink 實時寫入 Hive 5min 表,供查詢明細數據,同時要提供給離線數倉,做為其原始數據。

    3)DIM 層

    公共維度層,基于維度建模理念思想,建立整個業務過程的一致性維度,降低數據計算口徑和算法不統一風險。

    DIM 層數據來源于兩部分:一部分是Flink程序實時處理ODS層數據得到,另外一部分是通過離線任務出倉得到。

    DIM 層維度數據主要使用 MySQL、Hbase、Redis 三種存儲引擎,對于維表數據比較少的情況可以使用 MySQL,對于單條數據大小比較小,查詢 QPS 比較高的情況,可以使用 Redis 存儲,降低機器內存資源占用,對于數據量比較大,對維表數據變化不是特別敏感的場景,可以使用HBase 存儲。

    4)DM 層

    ①數據集市層

    以數據域+業務域的理念建設公共匯總層,對于DM層比較復雜,需要綜合考慮對于數據落地的要求以及具體的查詢引擎來選擇不同的存儲方式,分為輕度匯總層和高度匯總層,同時產出,高度匯總層數據用于前端比較簡單的KV查詢, 提升查詢性能,比如實時大屏,實時報表等,數據的時效性要求為秒級,輕度匯總層Kafka中寬表實時寫入OLAP存儲引擎,用于前端產品復雜的OLAP查詢場景,滿足自助分析和產出復雜報表的需求,對數據的時效性要求可容忍到分鐘級;

    ②輕度匯總層

    輕度匯總層由明細層通過Streaming ETL得到,主要以寬表的形式存在,業務明細匯總是由業務事實明細表和維度表join得到,流量明細匯總是由流量日志按業務線拆分和維度表join得到。

    輕度匯總層數據存儲比較多樣化,首先利用Flink實時消費DWD層Kafka中明細數據join業務過程需要的維表,實時打寬后寫入該層的Kafka中,以Json或PB格式存儲。

    同時對多維業務明細匯總數據通過Flink實時寫入Kudu,用于查詢明細數據和更復雜的多維數據分析需求,對于流量數據通過Flink分別寫入HDFS和ClickHouse用于復雜的多維數據分析, 實時特征數據則通過Flink join維表后實時寫入HDFS,用于下游的離線ETL消費。

    對于落地Kudu和HDFS的寬表數據,可用Spark SQL做分鐘級的預計算,滿足業務方復雜數據分析需求,提供分鐘級延遲的數據,從而加速離線ETL過程的延遲, 另外隨著Flink SQL與Hive生態集成的不斷完善,可嘗試用Flink SQL做離線ETL和OLAP計算任務(Flink流計算基于內存計算的特性,和presto非常類似,這使其也可以成為一個OLAP計算引擎),用一套計算引擎解決實時離線需求,從而實現批流統一。

    對于Kudu中的業務明細數據、ClickHouse中的流量明細數據,也可以滿足業務方的個性化數據分析需求,利用強大的OLAP計算引擎,實時查詢明細數據,在10s量級的響應時間內給出結果,這類需求也即是實時OLAP需求,靈活性比較高。

    ③高度匯總層

    高度匯總層由明細數據層或輕度匯總層通過聚合計算后寫入到存儲引擎中,產出一部分實時數據指標需求,靈活性比較差。

    計算引擎使用Flink Datastream API和Flink SQL,指標存儲引擎根據不同的需求,對于常見的簡單指標匯總模型可直接放在MySQL里面,維度比較多的、寫入更新比較大的模型會放在HBase里面, 還有一種是需要做排序、對查詢QPS、響應時間要求非常高、且不需要持久化存儲如大促活動期間在線TopN商品等直接存儲在Redis里面。

    在秒級指標需求中,需要混用Lambda和Kappa架構,大部分實時指標使用Kappa架構完成計算,少量關鍵指標(如金額相關)使用Lambda架構用批處理重新處理計算,增加一次校對過程。

    總體來說 DM 層對外提供三種時效性的數據:

    首先是 Flink 等實時計算引擎預計算好的秒級實時指標,這種需求對數據的時效性要求非常高,用于實時大屏、計算維度不復雜的實時報表需求。

    其次是 Spark SQL 預計算的延遲在分鐘級的準實時指標, 該類指標滿足一些比較復雜但對數據時效性要求不太高的數據分析場景,可能會涉及到多個事實表的join,如銷售歸因等需求。

    最后一種則是不需要預計算,ad-hoc查詢的復雜多維數據分析場景,此類需求比較個性化,靈活性比較高,如果 OLAP 計算引擎性能足夠強大,也可完全滿足秒級計算需求的場景; 對外提供的秒級實時數據和另外兩種準實時數據的比例大致為 3:7,絕大多數的業務需求都優先考慮準實時計算或 ad-hoc 方式,可以降低資源使用、提升數據準確性,以更靈活的方式滿足復雜的業務場景。

    3、實時數據體系建設方式

    整個實時數據體系分為兩種建設方式,即實時和準實時(它們的實現方式分別是基于流計算引擎和 ETL、OLAP 引擎,數據時效性則分別是秒級和分鐘級。

    1)在調度開銷方面,準實時數據是批處理過程,因此仍然需要調度系統支持,調度頻率較高,而實時數據卻沒有調度開銷。

    2)在業務靈活性方面,因為準實時數據是基于 ETL 或 OLAP 引擎實現,靈活性優于基于流計算的方式。

    3)在對數據晚到的容忍度方面,因為準實時數據可以基于一個周期內的數據進行全量計算,因此對于數據晚到的容忍度也是比較高的,而實時數據使用的是增量計算,對于數據晚到的容忍度更低一些。

    4)在適用場景方面,準實時數據主要用于有實時性要求但不太高、涉及多表關聯和業務變更頻繁的場景,如交易類型的實時分析,實時數據則更適用于實時性要求高、數據量大的場景,如實時特征、流量類型實時分析等場景。

    4、流批一體實時數據架構發展

    從1990年 Inmon 提出數據倉庫概念到今天,大數據架構經歷了從最初的離線大數據架構、Lambda 架構、Kappa 架構以及 Flink 的火熱帶出的流批一體架構,數據架構技術不斷演進,本質是在往流批一體的方向發展,讓用戶能以最自然、最小的成本完成實時計算。

    1)離線大數據架構:數據源通過離線的方式導入到離線數倉中,下游應用根據業務需求選擇直接讀取 DM 或加一層數據服務,比如 MySQL 或 Redis,數據存儲引擎是 HDFS/Hive,ETL 工具可以是 MapReduce 腳本或 HiveSQL。數據倉庫從模型層面分為操作數據層 ODS、數據倉庫明細層 DWD、數據集市層 DM。

    2)Lambda 架構:隨著大數據應用的發展,人們逐漸對系統的實時性提出了要求,為了計算一些實時指標,就在原來離線數倉的基礎上增加了一個實時計算的鏈路,并對數據源做流式改造(即把數據發送到消息隊列),實時計算去訂閱消息隊列,直接完成指標增量的計算,推送到下游的數據服務中去,由數據服務層完成離線&實時結果的合并。

    3)Kappa 架構:Lambda 架構雖然滿足了實時的需求,但帶來了更多的開發與運維工作,其架構背景是流處理引擎還不完善,流處理的結果只作為臨時的、近似的值提供參考。后來隨著 Flink 等流處理引擎的出現,流處理技術成熟起來,這時為了解決兩套代碼的問題,LickedIn 的 Jay Kreps 提出了 Kappa 架構。

    4)流批一體架構:流批一體架構比較完美的實現方式是采用流計算 + 交互式分析雙引擎架構,在這個架構中,流計算負責的是基礎數據,而交互式分析引擎是中心,流計算引擎對數據進行實時 ETL 工作,與離線相比,降低了 ETL 過程的 latency,交互式分析引擎則自帶存儲,通過計算存儲的協同優化, 實現高寫入 TPS、高查詢 QPS 和低查詢 latency ,從而做到全鏈路的實時化和 SQL 化,這樣就可以用批的方式實現實時分析和按需分析,并能快速的響應業務的變化,兩者配合,實現 1 + 1 > 2 的效果;該架構對交互式分析引擎的要求非常高,也許是未來大數據庫技術發展的一個重點和方向。

    為了應對業務方更復雜的多維實時數據分析需求,筆者目前在數據開發中引入 Kudu這個 OLAP 存儲引擎,對訂單等業務數據使用 Presto + Kudu 的計算方案也是在探索流批一體架構在實時數據分析領域的可行性。此外,目前比較熱的數據湖技術,如 Delta lake、Hudi 等支持在 HDFS 上進行 upsert 更新,隨著其流式寫入、SQL 引擎支持的成熟,未來可以用一套存儲引擎解決實時、離線數據需求,從而減少多引擎運維開發成本。

    三、Flink SQL 實時計算 UV 指標

    上一部分從宏觀層面介紹了如何建設實時數據體系,非常不接地氣,可能大家需要的只是一個具體的 case 來了解一下該怎么做,那么接下來用一個接地氣的案例來介紹如何實時計算 UV 數據。

    大家都知道,在 ToC 的互聯網公司,UV 是一個很重要的指標,對于老板、商務、運營的及時決策會產生很大的影響,筆者在電商公司,目前主要的工作就是計算 UV、銷售等各類實時數據,體驗就特別深刻, 因此就用一個簡單demo 演示如何用 Flink SQL 消費 Kafka 中的 PV 數據,實時計算出 UV 指標后寫入 Hbase。

    1、Kafka 源數據解析

    PV 數據來源于埋點數據經 FileBeat 上報清洗后,以 ProtoBuffer 格式寫入下游 Kafka,消費時第一步要先反序列化 PB 格式的數據為 Flink 能識別的 Row 類型,因此也就需要自定義實現 DeserializationSchema 接口,具體如下代碼, 這里只抽取計算用到的 PV 的 mid、事件時間 time_local,并從其解析得到 log_date 字段:

    public?class?PageViewDeserializationSchema?implements?DeserializationSchema?{??

    public?static?final?Logger?LOG?=?LoggerFactory.getLogger(PageViewDeserializationSchema.class);??

    protected?SimpleDateFormat?dayFormatter;??

    private?final?RowTypeInfo?rowTypeInfo;??

    public?PageViewDeserializationSchema(RowTypeInfo?rowTypeInfo){??

    dayFormatter?=?new?SimpleDateFormat("yyyyMMdd",?Locale.UK);??

    this.rowTypeInfo?=?rowTypeInfo;??

    }?

    @Override?

    public?Row?deserialize(byte[]?message)?throws?IOException?{??

    Row?row?=?new?Row(rowTypeInfo.getArity());??

    MobilePage?mobilePage?=?null;??

    try?{?

    mobilePage?=?MobilePage.parseFrom(message);??

    String?mid?=?mobilePage.getMid();??

    row.setField(0,?mid);??

    Long?timeLocal?=?mobilePage.getTimeLocal();??

    String?logDate?=?dayFormatter.format(timeLocal);??

    row.setField(1,?logDate);??

    row.setField(2,?timeLocal);??

    }catch?(Exception?e){??

    String?mobilePageError?=?(mobilePage?!=?null)???mobilePage.toString()?:?"";??

    LOG.error("error?parse?bytes?payload?is?{},?pageview?error?is?{}",?message.toString(),?mobilePageError,?e);??

    }?

    return?null;??

    }?

    2、編寫 Flink Job 主程序

    將 PV 數據解析為 Flink 的 Row 類型后,接下來就很簡單了,編寫主函數,寫 SQL 就能統計 UV 指標了,代碼如下:

    public?class?RealtimeUV?{??

    public?static?void?main(String[]?args)?throws?Exception?{??

    //step1?從properties配置文件中解析出需要的Kakfa、Hbase配置信息、checkpoint參數信息??

    Map?config?=?PropertiesUtil.loadConfFromFile(args[0]);??

    String?topic?=?config.get("source.kafka.topic");??

    String?groupId?=?config.get("source.group.id");??

    String?sourceBootStrapServers?=?config.get("source.bootstrap.servers");??

    String?hbaseTable?=?config.get("hbase.table.name");??

    String?hbaseZkQuorum?=?config.get("hbase.zk.quorum");??

    String?hbaseZkParent?=?config.get("hbase.zk.parent");??

    int?checkPointPeriod?=?Integer.parseInt(config.get("checkpoint.period"));??

    int?checkPointTimeout?=?Integer.parseInt(config.get("checkpoint.timeout"));??

    StreamExecutionEnvironment?sEnv?=?StreamExecutionEnvironment.getExecutionEnvironment();?

    //step2?設置Checkpoint相關參數,用于Failover容錯?

    sEnv.getConfig().registerTypeWithKryoSerializer(MobilePage.class,?

    ProtobufSerializer.class);??

    sEnv.getCheckpointConfig().setFailOnCheckpointingErrors(false);??

    sEnv.getCheckpointConfig().setMaxConcurrentCheckpoints(1);??

    sEnv.enableCheckpointing(checkPointPeriod,CheckpointingMode.EXACTLY_ONCE);??

    sEnv.getCheckpointConfig().setCheckpointTimeout(checkPointTimeout);??

    sEnv.getCheckpointConfig().enableExternalizedCheckpoints(??

    CheckpointConfig.ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);?

    //step3?使用Blink?planner、創建TableEnvironment,并且設置狀態過期時間,避免Job?OOM?

    EnvironmentSettings?environmentSettings?=?EnvironmentSettings.newInstance()??

    .useBlinkPlanner()??

    .inStreamingMode()??

    .build();??

    StreamTableEnvironment?tEnv?=?StreamTableEnvironment.create(sEnv,?environmentSettings);?

    tEnv.getConfig().setIdleStateRetentionTime(Time.days(1),?Time.days(2));??

    Properties?sourceProperties?=?new?Properties();?

    sourceProperties.setProperty("bootstrap.servers",?sourceBootStrapServers);??

    sourceProperties.setProperty("auto.commit.interval.ms",?"3000");??

    sourceProperties.setProperty("group.id",?groupId);?

    //step4?初始化KafkaTableSource的Schema信息,筆者這里使用register?TableSource的方式將源表注冊到Flink中,而沒有用register?DataStream方式,也是因為想熟悉一下如何注冊KafkaTableSource到Flink中?

    TableSchema?schema?=?TableSchemaUtil.getAppPageViewTableSchema();??

    Optional?proctimeAttribute?=?Optional.empty();??

    List?rowtimeAttributeDescriptors?=?Collections.emptyList();??

    Map?fieldMapping?=?new?HashMap<>();??

    List?columnNames?=?new?ArrayList<>();?

    RowTypeInfo?rowTypeInfo?=?new?RowTypeInfo(schema.getFieldTypes(),?schema.getFieldNames());?

    columnNames.addAll(Arrays.asList(schema.getFieldNames()));??

    columnNames.forEach(name?->?fieldMapping.put(name,?name));??

    PageViewDeserializationSchema?deserializationSchema?=?new??

    PageViewDeserializationSchema(??

    rowTypeInfo);??

    Map?specificOffsets?=?new?HashMap<>();??

    Kafka011TableSource?kafkaTableSource?=?new?Kafka011TableSource(?

    schema,?

    proctimeAttribute,??

    rowtimeAttributeDescriptors,??

    Optional.of(fieldMapping),??

    topic,?

    sourceProperties,??

    deserializationSchema,??

    StartupMode.EARLIEST,??

    specificOffsets);??

    tEnv.registerTableSource("pageview",?kafkaTableSource);?

    //step5?初始化Hbase?TableSchema、寫入參數,并將其注冊到Flink中?

    HBaseTableSchema?hBaseTableSchema?=?new?HBaseTableSchema();?

    hBaseTableSchema.setRowKey("log_date",?String.class);??

    hBaseTableSchema.addColumn("f",?"UV",?Long.class);??

    HBaseOptions?hBaseOptions?=?HBaseOptions.builder()??

    .setTableName(hbaseTable)??

    .setZkQuorum(hbaseZkQuorum)??

    .setZkNodeParent(hbaseZkParent)??

    .build();?

    HBaseWriteOptions?hBaseWriteOptions?=?HBaseWriteOptions.builder()?

    .setBufferFlushMaxRows(1000)??

    .setBufferFlushIntervalMillis(1000)??

    .build();??

    HBaseUpsertTableSink?hBaseSink?=?new?HBaseUpsertTableSink(hBaseTableSchema,?hBaseOptions,?hBaseWriteOptions);??

    tEnv.registerTableSink("uv_index",?hBaseSink);?

    //step6?實時計算當天UV指標sql,?這里使用最簡單的group?by?agg,沒有使用minibatch或窗口,在大數據量優化時最好使用后兩種方式?

    String?uvQuery?=?"insert?into?uv_index?"??

    +?"select?log_date,\n"??

    +?"ROW(count(distinct?mid)?as?UV)\n"??

    +?"from?pageview\n"??

    +?"group?by?log_date";??

    tEnv.sqlUpdate(uvQuery);??

    //step7?執行Job??

    sEnv.execute("UV?Job");??

    }??

    }?

    以上就是一個簡單的使用 Flink SQL 統計 UV 的 case, 代碼非常簡單,只需要理清楚如何解析 Kafka 中數據,如何初始化 Table Schema,以及如何將表注冊到 Flink中,即可使用 Flink SQL 完成各種復雜的實時數據統計類的業務需求,學習成本比API 的方式低很多。

    說明一下,筆者這個 demo 是基于目前業務場景而開發的,在生產環境中可以真實運行起來,可能不能拆箱即用,你需要結合自己的業務場景自定義相應的 kafka 數據解析類。

    收藏 人收藏
    分享:

    評論

    相關推薦

    基于4G LTE打造cat1,可彌補5G和物聯網的空缺

    從目前蜂窩物聯網發展的態勢看,LTE Cat 1承擔4G物聯網連接主力的時機已經開啟。其中,Cate....
    的頭像 朱胖子說物聯網 發表于 06-01 17:54 ? 133次 閱讀
    基于4G LTE打造cat1,可彌補5G和物聯網的空缺

    5G網絡的技術創新推動了智慧物流行業的發展

    5G能夠被廣泛應用于物流中,主要是因為物流與物聯網的緊密關系,5G海量接入的特性促進物聯網在物流行業....
    發表于 06-01 17:40 ? 7次 閱讀
    5G網絡的技術創新推動了智慧物流行業的發展

    河北首個A+P網絡商用部署站點完成,華為助力河北聯通5G網絡建設

    5月21日,河北聯通聯合華為在石家莊和平路電大街完成河北首個A+P網絡商用部署站點,采用4/5G一體....
    的頭像 牽手一起夢 發表于 06-01 17:08 ? 54次 閱讀
    河北首個A+P網絡商用部署站點完成,華為助力河北聯通5G網絡建設

    5G等新基建領域成為央企在漢投資重點

    5G等新基建領域成為央企在漢投資重點。中國信科集團5G產業化項目、烽火信息技術建設項目、智能微機電系....
    的頭像 MEMS 發表于 06-01 17:00 ? 62次 閱讀
    5G等新基建領域成為央企在漢投資重點

    阿里云在云計算細分市場呈現出“一超多強”的格局

    隨著云計算的不斷發展,業界對云計算的定義認識已趨于統一,根據國際標準ISO/IEC17788《云計算....
    的頭像 牽手一起夢 發表于 06-01 16:53 ? 117次 閱讀
    阿里云在云計算細分市場呈現出“一超多強”的格局

    工業物聯網可助于5G技術實現高速大容量數據傳輸

    Frost&Sullivan發現,將5G集成到工業物聯網(IIoT)系統中將有助于該技術發展,以實現....
    的頭像 牽手一起夢 發表于 06-01 16:48 ? 96次 閱讀
    工業物聯網可助于5G技術實現高速大容量數據傳輸

    高頻化帶來新機遇,高頻通信材料將迎來新變革

    隨著通信網絡不斷迭代,低頻率無線電異常擁擠。因此,通信網絡不得不向更高頻段發展,而5G網絡更是高頻通....
    的頭像 牽手一起夢 發表于 06-01 16:42 ? 144次 閱讀
    高頻化帶來新機遇,高頻通信材料將迎來新變革

    新基建賦能新一代私有云數據中心呈現多樣性架構

    5月28日下午,2020年全國兩會正式落下帷幕。今年的政府工作報告中明確提出“加強新型基礎設施建設”....
    的頭像 牽手一起夢 發表于 06-01 16:26 ? 78次 閱讀
    新基建賦能新一代私有云數據中心呈現多樣性架構

    大數據是如何改變增強現實的

    如今,大數據完全改變了增強現實(AR)和虛擬現實(VR)的運作方式。以下是大數據如何改變增強現實,以....
    發表于 06-01 15:02 ? 21次 閱讀
    大數據是如何改變增強現實的

    在寬帶用戶規模的爆發式增長之后,其分流作用影響暴增

    流量單價已經從4G時代初期的15元/GB降低到2019年年末時的4.8元/GB左右。2020年前4個....
    的頭像 牽手一起夢 發表于 06-01 11:25 ? 91次 閱讀
    在寬帶用戶規模的爆發式增長之后,其分流作用影響暴增

    2020年全球VR產業規模將達到1600億元,未來人才缺口亟待彌

    戴上VR(虛擬現實)設備走遍大好河山、登陸VR商店選購最新產品……隨著5G與VR在多個領域“成功牽手....
    的頭像 汽車玩家 發表于 06-01 09:40 ? 131次 閱讀
    2020年全球VR產業規模將達到1600億元,未來人才缺口亟待彌

    互聯網分析常用的12個數據指標

    互聯網行業的分析師,做指標體系搭建的時候,最常遇到兩個問題,一是不知道關注哪些指標,毫無頭緒;二是找....
    的頭像 人間煙火123 發表于 05-31 11:08 ? 644次 閱讀
    互聯網分析常用的12個數據指標

    5G最大價值或將推動第四次工業革命

    報導也指出,5G將在下個十年成為多項科技創新的基礎,譬如機器人和自動化技術。
    的頭像 人間煙火123 發表于 05-31 11:03 ? 550次 閱讀
    5G最大價值或將推動第四次工業革命

    智慧辦公賦能企業發展,助力產品場景化落地

    5G、AI、大數據、云計算、物聯網等技術的崛起和發展,正悄然并深刻地改變著我們的生活。 智慧辦公便是....
    發表于 05-31 10:46 ? 189次 閱讀
    智慧辦公賦能企業發展,助力產品場景化落地

    從宏觀角度看IoT的通信架構

    如果設備支持HTTP和TCP/IP,并且能夠直接連接互聯網,比如使用Wi-Fi,那么可以使用這種直連....
    發表于 05-31 10:19 ? 68次 閱讀
    從宏觀角度看IoT的通信架構

    Redmi智能電視X55性能評測,標配了60Hz MEMC運動補償技術

    在2020年Redmi除了發力5G手機市場,在AIoT領域的布局也是不斷加速,不斷把高端科技下放至全....
    發表于 05-30 11:33 ? 739次 閱讀
    Redmi智能電視X55性能評測,標配了60Hz MEMC運動補償技術

    怎么樣才能加快推動新型智慧城市的建設

    民盟大連市委會攜手市政協科教衛委共同提出了《關于加快大連新型智慧城市建設,全面提升城市治理現代化水平....
    的頭像 Wildesbeast 發表于 05-30 11:17 ? 373次 閱讀
    怎么樣才能加快推動新型智慧城市的建設

    未來5G網絡對無人機的需求滿足及應用案例

    無人駕駛航空器(Unmanned Aerial Vehicle,以下簡稱UAV)簡稱為無人機,其全球....
    發表于 05-30 11:13 ? 178次 閱讀
    未來5G網絡對無人機的需求滿足及應用案例

    美的IoT與騰訊云合作共同促進AIoT戰略新興產業發展

    5月28日,美的IoT與騰訊云簽署戰略合作框架協議,美的集團副總裁兼CIO張小懿、美的IoT運營副總....
    發表于 05-30 11:06 ? 527次 閱讀
    美的IoT與騰訊云合作共同促進AIoT戰略新興產業發展

    韓國5G網絡普及率接近10%,比4G使用量增加三倍以上

    韓國電信投資管理部門高級副總裁Oh Byung-ki表示,與4G LTE流量相比,其5G網絡上的數據....
    發表于 05-30 11:00 ? 320次 閱讀
    韓國5G網絡普及率接近10%,比4G使用量增加三倍以上

    泰州移動與泰州供電深度合作,攜手打造5G共享供電配電房

    “布線設點、設計電路、接入電線,配套基礎設施建設必須環環相扣,檢查清楚……”日前,在江蘇泰州市海陵區....
    發表于 05-30 10:51 ? 80次 閱讀
    泰州移動與泰州供電深度合作,攜手打造5G共享供電配電房

    中國移動5G醫療邊緣云平臺發布,攜手中興共創5G智慧醫療新時代

    5月29日,中國移動“5G賦能醫療 共建行業生態”發布會在成都舉行,正式發布中國移動5G醫療邊緣云1....
    發表于 05-30 10:44 ? 144次 閱讀
    中國移動5G醫療邊緣云平臺發布,攜手中興共創5G智慧醫療新時代

    工業互聯網多維度推動行業融通發展

    工業互聯網通過全面連接工業經濟的全要素、全產業鏈、全價值鏈,不僅可以實現單一行業內部優化,而且能夠實....
    發表于 05-30 10:36 ? 338次 閱讀
    工業互聯網多維度推動行業融通發展

    三大運營商的5G套餐資費先知道

    相信大家都知道,華為海思、高通、聯發科方面也都紛紛傳來了好消息,那就是它們都將會在Q3季度推出5G入....
    發表于 05-30 10:29 ? 558次 閱讀
    三大運營商的5G套餐資費先知道

    青島在5G建設上已取得起跑領先的地位

    近日,位于城陽區中車四方股份辦公樓頂的青島第1萬個5G基站建成啟用,這意味著青島實現了市內主要城區、....
    發表于 05-30 10:26 ? 80次 閱讀
    青島在5G建設上已取得起跑領先的地位

    為什么中國要投入對5G基礎設施的建設

    隨著5G技術逐漸被人們接受,我國如今在新基建上開始投入了大量的人力物力,經過各大媒體的不斷宣傳,人們....
    發表于 05-30 10:23 ? 110次 閱讀
    為什么中國要投入對5G基礎設施的建設

    三亞已建成開通5G基站342個_加快5G布局

    近日,三亞市人民醫院的醫生借助5G遠程診療系統為三亞市育才醫院和崖城衛生院的患者進行遠程就診,并定期....
    發表于 05-30 10:10 ? 73次 閱讀
    三亞已建成開通5G基站342個_加快5G布局

    韓國SK電訊和歐姆龍共研制5G防疫AI機器人,適合無接觸時代下各類服務

    5月27日消息,據報道,韓國最大的移動通訊運營商SK電訊和工業自動化解決方案提供商歐姆龍共同研發了一....
    發表于 05-30 09:05 ? 95次 閱讀
    韓國SK電訊和歐姆龍共研制5G防疫AI機器人,適合無接觸時代下各類服務

    關鍵元器件成5G投資熱點,產業紅利助攻千億市值!

    基帶芯片、射頻前端的投資熱點已經點燃,2020年中國三大運營商對5G投資總額高達1800多億,5G投....
    發表于 05-30 08:30 ? 790次 閱讀
    關鍵元器件成5G投資熱點,產業紅利助攻千億市值!

    如今越來越多的設備需要導點膠加工的安全防護

    隨著5G時代的到來,5G技術的進步與發展,帶動了許多設備的更新換代,有些設備需要進行導點膠加工來做好....
    發表于 05-29 17:15 ? 42次 閱讀
    如今越來越多的設備需要導點膠加工的安全防護

    5G時代又是如何發展到今天的呢?

    1G時代并不區分移動、聯通和電信,主宰著模擬時代的愛立信和摩托羅拉將網絡分為了A、B兩網。通信設備就....
    的頭像 貿澤電子設計圈 發表于 05-29 16:22 ? 249次 閱讀
    5G時代又是如何發展到今天的呢?

    如何確保物聯網部署具備5G功能

    在這個充滿挑戰的時代,希望推進這類舉措的公司將希望安全地這樣做,因為他們知道,在5G網絡全面鋪開的時....
    發表于 05-29 16:20 ? 114次 閱讀
    如何確保物聯網部署具備5G功能

    5G運用的六大創新技術解析

    5G采用512-QAM或1024-QAM更高的數據壓縮密度調制/解調制器,目前4G使用256-QAM....
    發表于 05-29 15:57 ? 201次 閱讀
    5G運用的六大創新技術解析

    一文解析第五代通信技術

    美國芯片制造商高通認為,5G可以在實際(而不是實驗室)條件下,實現(相比于4G)快10到20倍的瀏覽....
    發表于 05-29 15:55 ? 92次 閱讀
    一文解析第五代通信技術

    5G商用有哪些進展看了就知道

    今年的政府工作報告提出,擴大有效投資。重點支持既促消費惠民生又調結構增后勁的“兩新一重”建設,包括拓....
    發表于 05-29 15:50 ? 79次 閱讀
    5G商用有哪些進展看了就知道

    避免毫米波應用中的連接器反射

    要讓5G的數據傳輸速度實現大幅提升(預計至少比4G快4倍),需要使用高帶寬的毫米波頻譜。但使用這么高....
    的頭像 貿澤電子設計圈 發表于 05-29 15:49 ? 147次 閱讀
    避免毫米波應用中的連接器反射

    三大運營商降低5G套餐價格_推進5G服務的普及

    中國電信、中國移動都公布了截至4月份的5G用戶數,合計只有6000多萬,而中國聯通依然未公布5G用戶....
    發表于 05-29 15:47 ? 143次 閱讀
    三大運營商降低5G套餐價格_推進5G服務的普及

    Qualcomm聯合全球十五家運營商共同打造XR Viewer產品

    XR Viewer作為一種輕便的頭戴顯示設備,可通過USB Type-C連接至搭載Qualcomm驍....
    的頭像 Qualcomm中國 發表于 05-29 11:23 ? 389次 閱讀
    Qualcomm聯合全球十五家運營商共同打造XR Viewer產品

    XR行業態勢,一起展望XR在5G時代的新機遇

    第三,Neo 2用戶平均使用時長已經達到了每天70-80分鐘,這得益于Neo 2舒適的佩戴體驗??蓡?...
    的頭像 Qualcomm中國 發表于 05-29 11:05 ? 309次 閱讀
    XR行業態勢,一起展望XR在5G時代的新機遇

    Qualcomm將與中國電信一起,共譜5G時代新篇章

    驍龍X55 5G調制解調器及射頻系統提供完整的從調制解調器到天線的全集成5G解決方案,可簡化多種移動....
    的頭像 Qualcomm中國 發表于 05-29 10:59 ? 263次 閱讀
    Qualcomm將與中國電信一起,共譜5G時代新篇章

    基于大數據可視化技術的畢業生就業分析服務項目?

    基于大數據可視化技術的畢業生就業分析服務項目 (軟件創新設計期末報告)...
    發表于 05-29 10:04 ? 15次 閱讀
    基于大數據可視化技術的畢業生就業分析服務項目?

    智慧城市通過這5種方法來抵御流行病的爆發

    我們抵御大流行的最大防御手段之一是我們不斷發展的技術。盡管我們互聯的世界使病毒更快地傳播,但它也可以....
    的頭像 獨愛72H 發表于 05-28 16:39 ? 522次 閱讀
    智慧城市通過這5種方法來抵御流行病的爆發

    5G時代運營商的視頻業務如何發展

    對于家庭娛樂市場,運營商一直都在努力,但很長一段時間都把IPTV當做主戰場。工信部最新數據顯示:截至....
    發表于 05-28 15:40 ? 86次 閱讀
    5G時代運營商的視頻業務如何發展

    在未來5G技術將會如何改變我們的世界

    隨著全球數據網絡第五代連接的實現,世界將發生改變。5G被認為是我們過去遇到的任何連接問題的救星,并且....
    的頭像 獨愛72H 發表于 05-28 15:38 ? 467次 閱讀
    在未來5G技術將會如何改變我們的世界

    國內5G水平領先全球_運營商還需加倍努力

    要說5G應用,那么就先要說5G網絡的現狀。從目前來看,我國的5G網絡基礎設施的建設無疑領先于全球。
    發表于 05-28 15:35 ? 118次 閱讀
    國內5G水平領先全球_運營商還需加倍努力

    中國電信如何推動5G建設應用的

    夯實5G網絡基礎設施建設,是推進新基建發展的關鍵。2019年以來,作為省內信息化建設主力軍,中國電信....
    發表于 05-28 15:20 ? 87次 閱讀
    中國電信如何推動5G建設應用的

    WiFi6與5G在物聯網應用中誰主沉浮

    近年來,隨著Wi-Fi6、5G的涌現,物聯網行業也迎來了飛速的發展。Wi-Fi本身就是一項成熟的無線....
    發表于 05-28 15:16 ? 96次 閱讀
    WiFi6與5G在物聯網應用中誰主沉浮

    5G部署不斷提速_拓展5G融合應用新空間

    對于2020珠峰高程測量登山隊登頂的現場直播通過5G信號傳輸到千家萬戶。
    發表于 05-28 15:12 ? 56次 閱讀
    5G部署不斷提速_拓展5G融合應用新空間

    5G網絡將對大數據、智能城市的發展會產生什么影響

    大數據及其對我們隱私的影響是21世紀最大的挑戰之一。隨著5G的出現及其令人印象深刻的功能,讓我們來探....
    的頭像 獨愛72H 發表于 05-28 15:04 ? 458次 閱讀
    5G網絡將對大數據、智能城市的發展會產生什么影響

    【課程筆記】OurwayBI全新UI之圖片上傳應用

    在這次的奧威BI數據可視化工具操作分解課程中,我們將學習如何上傳商場平面圖,實現商場平面圖與其他圖表的聯動分析,以及鼠標...
    發表于 05-27 16:50 ? 125次 閱讀
    【課程筆記】OurwayBI全新UI之圖片上傳應用

    【課程筆記】儀表盤和數字圖的應用

    這期我們的主要任務是學習OurwayBI數據可視化工具上的儀表盤和數字圖。從作用上來說,這兩個可視化圖表都是用于分析展示關鍵指...
    發表于 05-14 14:59 ? 116次 閱讀
    【課程筆記】儀表盤和數字圖的應用

    從使用效果來看,數據可視化工具離不開數據中臺嗎?

    數據可視化工具具有數據智能分析、數據可視化展現兩大作用,同時數據可視化報表還具備實時運算、分析的功能,而從功能實現途徑來...
    發表于 05-12 14:14 ? 99次 閱讀
    從使用效果來看,數據可視化工具離不開數據中臺嗎?

    不用配電腦,PLC設備的數據也能處理后存入服務器數據庫了

    通過智能網關采集多臺設備數據到SQL數據庫:詳細案例分享 ...
    發表于 05-05 11:52 ? 448次 閱讀
    不用配電腦,PLC設備的數據也能處理后存入服務器數據庫了

    什么是大數據?

    幾分鐘看懂什么是大數據?
    發表于 04-30 14:24 ? 160次 閱讀
    什么是大數據?

    大數據系列之Spark

    大數據系列  Spark初探
    發表于 04-30 08:08 ? 59次 閱讀
    大數據系列之Spark

    大數據計算服務MaxCompute的使用教程

    阿里云大數據計算服務MaxCompute使用教程
    發表于 04-30 07:57 ? 65次 閱讀
    大數據計算服務MaxCompute的使用教程

    大數據技術視閾下如何進行偵查工作的轉型

    【大數據技術視閾下】偵查工作的轉型發展與完善進路...
    發表于 04-24 15:09 ? 87次 閱讀
    大數據技術視閾下如何進行偵查工作的轉型

    怎么才能編程大數據技術專家

    從小白到大數據技術專家的學習歷程
    發表于 04-24 09:06 ? 124次 閱讀
    怎么才能編程大數據技術專家
    中文AV岛国无码免费播放

      <object id="hatzn"><option id="hatzn"><mark id="hatzn"></mark></option></object>
      <object id="hatzn"></object>
      <pre id="hatzn"></pre>

    1. <center id="hatzn"><em id="hatzn"><track id="hatzn"></track></em></center>

      <del id="hatzn"><small id="hatzn"><samp id="hatzn"></samp></small></del><center id="hatzn"><small id="hatzn"><track id="hatzn"></track></small></center>
    2. <center id="hatzn"><ol id="hatzn"><p id="hatzn"></p></ol></center>

      <center id="hatzn"><em id="hatzn"></em></center>