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

如何基于Flink實現(xiàn)定制化功能的開發(fā)

這篇具有很好參考價值的文章主要介紹了如何基于Flink實現(xiàn)定制化功能的開發(fā)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言:

? ? ? ?技術(shù)為需求服務(wù),通用需求由開源軟件提供功能,一些特殊的需求,需要基于場景定制化開發(fā)功能。而對于自定義開發(fā)功能,F(xiàn)link則提供了這樣的SDK接口能力。

本文將從定制化功能需求分析如何基于Flink構(gòu)建定制化功能兩個方面講述。

一、定制化功能開發(fā)的思考

2.1 為什么要學(xué)會定制化功能的開發(fā)?

? ? ? ?一些常規(guī)需求的應(yīng)用能力已經(jīng)被包裝得很好,只需要關(guān)注包裝在功能之上的交互邏輯,就能滿足業(yè)務(wù)需求。但有些需求依靠現(xiàn)成的技術(shù)無法完成,只能自定義任務(wù)邏輯,完成特定場景需求的功能包裝;或者部分功能性能和可用性不佳,需要重構(gòu)功能滿足可用性和高性能需求。

2.2 有哪些需求屬于定制化開發(fā)

大數(shù)據(jù)場景,對數(shù)據(jù)集成、加工與分析、寫結(jié)果這三個過程,都可以做定制化開發(fā):

從集成角度:公司采集各種數(shù)據(jù)源的數(shù)據(jù):使用集成工具,如fileBeat、dataX、canal、sqoop、Flume等從各種源端獲取數(shù)據(jù),這屬于對功能的應(yīng)用

如果定制化開發(fā)任務(wù):需要對SourceFunction函數(shù)的包裝,實現(xiàn)對各種數(shù)據(jù)源的采集,這屬于定制化需求開發(fā);

如果定制化開發(fā)SDK:開發(fā)一個工具包,然后通過更改數(shù)據(jù)源配置驅(qū)動任務(wù),這就屬于定制化功能的開發(fā),如:flink-sql-connector-mysql-cdc;

從加工和分析角度:

如果對數(shù)據(jù)的加工:實現(xiàn)類似ETL處理,數(shù)據(jù)擴(kuò)維,打標(biāo),特征聚類,這屬于定制化需求開發(fā);

如果重寫處理算子函數(shù):對數(shù)據(jù)操作重寫一個ProcessFunction、MapFunction、AggregateFunction函數(shù),然后重載到DataStream對象里,這就是定制化功能開發(fā);

從寫結(jié)果過程:

如果自定義RichSinkFunction函數(shù):實現(xiàn)對目標(biāo)端接口的包裝,這屬于定制化需求開發(fā);

如果包裝一個SDK工具:然后將功能打包成SDK服務(wù),嵌入Flink的sink算子內(nèi),這屬于定制化功能的開發(fā),如doris包裝的:flink-doris-connector-1.14_2.12。

二、如何基于Flink構(gòu)建定制化的功能

以下是基于Flink構(gòu)建定制化需求和功能的一些思路:

2.1. 確定業(yè)務(wù)需求和計算模型

? ? ? ?首先,理清楚你的業(yè)務(wù)需求和所需的計算模型。明確需要處理的數(shù)據(jù)類型、處理邏輯、計算規(guī)則和數(shù)據(jù)流動方向等。

2.2 使用 Flink 提供的 API 進(jìn)行開發(fā)

? ? ? ?利用 Flink 的 DataStream API 或 Table API,根據(jù)業(yè)務(wù)需求編寫你的計算邏輯。這些 API 提供了豐富的操作符和方法,用于對數(shù)據(jù)進(jìn)行轉(zhuǎn)換、聚合、過濾等處理。你可以根據(jù)實際需求自定義操作符和函數(shù),實現(xiàn)特定的計算邏輯。

2.3 實現(xiàn)自定義算子和函數(shù)

? ? ? ? ?如果標(biāo)準(zhǔn)操作符無法滿足你的需求,可以實現(xiàn)自定義的算子(Operator)或函數(shù)(Function)。例如,可以擴(kuò)展 Flink 的 RichFunction 接口,實現(xiàn)自定義的 MapFunction、FilterFunction、AggregateFunction、KeyedProcessFunction 等。

? ? ? ?這些算子的底層是通過processFucetion實現(xiàn)的,可以自定義processFucetion的value與context構(gòu)建更細(xì)粒度的操作;

? ? ? ? 對于一些有自己客戶端和讀寫API的服務(wù),可以將服務(wù)讀寫API,通過服務(wù)客戶端接口自定義RichSourceFunction和RichSinkFunction,然后包裝成SDK提供服務(wù);

以下是自定義Redis的RichSinkFunction函數(shù)例子:

import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.streaming.api.functions.sink.RichSinkFunction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig;

import java.util.HashSet;
import java.util.Set;


public class RedisSink extends RichSinkFunction<Tuple2<String, String>> {
    private static final Logger LOGGER = LoggerFactory.getLogger(RedisSink.class);

    private JedisCluster cluster;

    private String key;
    private String value;


    public RedisSink(String key, String value) {
        this.key = key;
        this.value = value;

    }

    @Override
    public void open(Configuration parameters) throws Exception {
        Set<HostAndPort> hostAndPorts = new HashSet<>();
        hostAndPorts.add(new HostAndPort("ip", 1111));
        hostAndPorts.add(new HostAndPort("ip2", 1111));

        // Jedis連接池配置
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        // 最大空閑連接數(shù), 默認(rèn)8個
        jedisPoolConfig.setMaxIdle(100);
        // 最大連接數(shù), 默認(rèn)8個
        jedisPoolConfig.setMaxTotal(500);
        //最小空閑連接數(shù), 默認(rèn)0
        jedisPoolConfig.setMinIdle(0);
        // 獲取連接時的最大等待毫秒數(shù)(如果設(shè)置為阻塞時BlockWhenExhausted),如果超時就拋異常, 小于零:阻塞不確定的時間,  默認(rèn)-1
        jedisPoolConfig.setMaxWaitMillis(2000); // 設(shè)置2秒
        cluster = new JedisCluster(hostAndPorts, jedisPoolConfig);
    }

    @Override
    public void invoke(Tuple2<String,  String> tuple2, Context context) throws Exception {
                cluster.set(tuple2.f0, tuple2.f1);
    }

    @Override
    public void close() throws Exception {
        super.close();
        if (cluster != null) {
            cluster.close();
        }
    }
}

2.4 優(yōu)化和調(diào)優(yōu)

? ? ? ?在構(gòu)建定制化計算引擎的過程中,持續(xù)進(jìn)行優(yōu)化和調(diào)優(yōu)是很重要的??紤]到數(shù)據(jù)處理性能、吞吐量和延遲等方面的問題,對代碼進(jìn)行優(yōu)化和調(diào)整。

2.5 測試和部署

? ? ? ? 完成代碼編寫后,進(jìn)行測試和驗證。確保計算引擎在不同場景和數(shù)據(jù)量下能夠正常運行。之后,根據(jù)需求選擇合適的部署方式,可以在集群環(huán)境中部署你的定制化計算引擎。

2.6 監(jiān)控和維護(hù)

? ? ? ? 一旦部署完成,建立相應(yīng)的監(jiān)控機(jī)制,監(jiān)控計算引擎的運行狀態(tài)和性能指標(biāo)。持續(xù)地進(jìn)行維護(hù)和優(yōu)化,確保計算引擎的穩(wěn)定性和性能。

三 、總結(jié)

? ? ? ?總的來說,構(gòu)建定制化的計算引擎需要深入了解業(yè)務(wù)需求,善用 Flink 提供的 API,并根據(jù)實際情況進(jìn)行優(yōu)化和調(diào)整。 Flink 提供了強(qiáng)大的功能和靈活性,可以幫助你構(gòu)建符合特定業(yè)務(wù)場景需求的定制化計算引擎,完成定制化功能的開發(fā)。文章來源地址http://www.zghlxwxcb.cn/news/detail-806648.html

到了這里,關(guān)于如何基于Flink實現(xiàn)定制化功能的開發(fā)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 從零開始搭建flink流式計算項目-2小試牛刀-物聯(lián)網(wǎng)場景下,如何實現(xiàn)設(shè)備采集參數(shù)監(jiān)控報警功能

    從零開始搭建flink流式計算項目-2小試牛刀-物聯(lián)網(wǎng)場景下,如何實現(xiàn)設(shè)備采集參數(shù)監(jiān)控報警功能

    * 設(shè)備ID */ private Integer deviceId; * 監(jiān)控的變量名稱 */ private String varName; * 最小值 */ private Double min; * 最大值 */ private Double max; } /** * 報警消息 */ @Data public class AlarmMessage { * 設(shè)備 */ private Integer deviceId; * 報警時間 */ private Long timestamp; /** * 觸發(fā)報警的采集變量名稱 */ private String ala

    2024年04月11日
    瀏覽(21)
  • 基于 Flink & Paimon 實現(xiàn) Streaming Warehouse 數(shù)據(jù)一致性管理

    基于 Flink & Paimon 實現(xiàn) Streaming Warehouse 數(shù)據(jù)一致性管理

    摘要:本文整理自字節(jié)跳動基礎(chǔ)架構(gòu)工程師李明,在 Apache Paimon Meetup 的分享。本篇內(nèi)容主要分為四個部分: 背景 方案設(shè)計 當(dāng)前進(jìn)展 未來規(guī)劃 點擊查看原文視頻 演講PPT ? 早期的數(shù)倉生產(chǎn)體系主要以離線數(shù)倉為主,業(yè)務(wù)按照自己的業(yè)務(wù)需求將數(shù)倉分為不同的層次,例如 DW

    2024年02月14日
    瀏覽(23)
  • 基于大數(shù)據(jù)平臺(XSailboat)的計算管道實現(xiàn)MySQL數(shù)據(jù)源的CDC同步--flink CDC

    基于大數(shù)據(jù)平臺(XSailboat)的計算管道實現(xiàn)MySQL數(shù)據(jù)源的CDC同步--flink CDC

    筆者在先前的一篇文檔《數(shù)據(jù)標(biāo)簽設(shè)計 – 大數(shù)據(jù)平臺(XSailboat)的數(shù)據(jù)標(biāo)簽?zāi)K》 提到了關(guān)于數(shù)據(jù)標(biāo)簽的模塊,現(xiàn)已實現(xiàn)并應(yīng)用于項目中。在項目中遇到這樣一種情形: 如果打標(biāo)信息和業(yè)務(wù)數(shù)據(jù)是在一個數(shù)據(jù)庫實例中,那么只需要連接兩張表進(jìn)行查詢即可。但是數(shù)據(jù)標(biāo)簽作為

    2024年01月17日
    瀏覽(35)
  • Flink Dashboard的數(shù)據(jù)監(jiān)控功能

    Flink Dashboard的數(shù)據(jù)監(jiān)控功能

    1.1 數(shù)據(jù)反壓是啥 數(shù)據(jù)反壓是在實時數(shù)據(jù)處理中,數(shù)據(jù)處理流的某個節(jié)點上游產(chǎn)生數(shù)據(jù)的速度大于該節(jié)點處理數(shù)據(jù)速度,導(dǎo)致數(shù)據(jù)堆積,從該節(jié)點向上游傳遞,一直到數(shù)據(jù)源,并降低數(shù)據(jù)源的攝入速度。導(dǎo)致數(shù)據(jù)反壓出現(xiàn)的常見場景,比如, GC導(dǎo)致短時間數(shù)據(jù)積壓,數(shù)據(jù)的波動

    2024年02月13日
    瀏覽(23)
  • 基于Canal與Flink實現(xiàn)數(shù)據(jù)實時增量同步(一),計算機(jī)畢設(shè)源碼要提交嗎

    基于Canal與Flink實現(xiàn)數(shù)據(jù)實時增量同步(一),計算機(jī)畢設(shè)源碼要提交嗎

    配置修改 修改conf/example/instance.properties,修改內(nèi)容如下: canal.instance.mysql.slaveId = 1234 #position info,需要改成自己的數(shù)據(jù)庫信息 canal.instance.master.address = kms-1.apache.com:3306 #username/password,需要改成自己的數(shù)據(jù)庫信息 canal.instance.dbUsername = canal canal.instance.dbPassword = canal canal.mq.topic

    2024年04月12日
    瀏覽(38)
  • 如何在Flink SQL中輕松實現(xiàn)高效數(shù)據(jù)處理:最佳實踐揭秘Protobuf自定義格式

    目錄 Flink SQL Protobuf Format設(shè)計要點 1. 引言 2. 為什么需要自定義Protobuf格式? 3. 自定義Protobuf格式的

    2024年02月19日
    瀏覽(21)
  • PiflowX如何快速開發(fā)flink程序

    PiflowX如何快速開發(fā)flink程序

    參考資料 Flink最鋒利的武器:Flink SQL入門和實戰(zhàn) | 附完整實現(xiàn)代碼-騰訊云開發(fā)者社區(qū)-騰訊云 (tencent.com) Flink SQL 背景 Flink SQL 是 Flink 實時計算為簡化計算模型,降低用戶使用實時計算門檻而設(shè)計的一套符合標(biāo)準(zhǔn) SQL 語義的開發(fā)語言。 自 2015 年開始,阿里巴巴開始調(diào)研開源流計

    2024年01月16日
    瀏覽(19)
  • 輕松通關(guān)Flink第24講:Flink 消費 Kafka 數(shù)據(jù)業(yè)務(wù)開發(fā)

    在上一課時中我們提過在實時計算的場景下,絕大多數(shù)的數(shù)據(jù)源都是消息系統(tǒng),而 Kafka 從眾多的消息中間件中脫穎而出,主要是因為 高吞吐 、 低延遲 的特點;同時也講了 Flink 作為生產(chǎn)者像 Kafka 寫入數(shù)據(jù)的方式和代碼實現(xiàn)。這一課時我們將從以下幾個方面介紹 Flink 消費

    2024年02月08日
    瀏覽(26)
  • flink重溫筆記(六):Flink 流批一體 API 開發(fā)—— 數(shù)據(jù)輸出 sink

    前言:今天是學(xué)習(xí) flink 的第七天啦!學(xué)習(xí)了 flink 中 sink(數(shù)據(jù)槽) 部分知識點,這一部分只要是解決數(shù)據(jù)處理之后,數(shù)據(jù)到哪里去的問題,我覺得 flink 知識點雖然比較難理解,但是代碼跑通后,邏輯還是比較有趣的! Tips:毛爺爺說過:“宜將剩勇追窮寇,不可沽名學(xué)霸王

    2024年02月21日
    瀏覽(18)
  • 數(shù)睿通2.0功能更新:支持多版本 Flink 切換,新增數(shù)據(jù)標(biāo)簽?zāi)K

    數(shù)睿通2.0功能更新:支持多版本 Flink 切換,新增數(shù)據(jù)標(biāo)簽?zāi)K

    小伙伴們,大家好,數(shù)睿通 2.0 數(shù)據(jù)中臺迎來了 12 月份的更新,由于年底工作繁忙,所以本次更新內(nèi)容稍微少了點,還望理解,本次更新內(nèi)容主要包括: 數(shù)據(jù)開發(fā)多版本 Flink 支持,執(zhí)行任務(wù)的時候可以動態(tài)切換 Flink 版本,目前支持的版本有 1.14 和 1.16 新增數(shù)據(jù)標(biāo)簽?zāi)K,包

    2024年02月01日
    瀏覽(20)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包