flink原理和基本功能是什么,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
成都創(chuàng)新互聯(lián)公司從2013年成立,先為長(zhǎng)洲等服務(wù)建站,長(zhǎng)洲等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為長(zhǎng)洲企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
具有時(shí)間邊界的數(shù)據(jù)集,處理過(guò)程中數(shù)據(jù)一定會(huì)在某個(gè)時(shí)間內(nèi)開(kāi)始和結(jié)束。
數(shù)據(jù)只有開(kāi)始沒(méi)有邊界。
SQL API支持批和流的計(jì)算。
Table API將內(nèi)存中的DataStream和DataSet數(shù)據(jù)集在原有的基礎(chǔ)上增加Schema信息,將數(shù)據(jù)類(lèi)型統(tǒng)一抽象成表結(jié)構(gòu),然后通過(guò)Table API接口處理對(duì)應(yīng)的數(shù)據(jù)集。
SQL API可以直接查詢Table API注冊(cè)表的數(shù)據(jù)。
Tabel API 提供大量接口如GroupByKey、Join等,并支持和DataStream和DataSet的相互轉(zhuǎn)換。
有編程經(jīng)驗(yàn)者使用,1.12版本開(kāi)始DataStream處理流批數(shù)據(jù),DataSet接口逐步廢除。
Flink最底層接口,靈活性非常強(qiáng),可實(shí)現(xiàn)復(fù)雜的流式計(jì)算邏輯,使用成本較高,一般企業(yè)級(jí)用戶使用它進(jìn)行二次開(kāi)發(fā)或深度封裝。
設(shè)定運(yùn)行環(huán)境,支持動(dòng)態(tài)(本地和線上)啟動(dòng)、本地啟動(dòng)、遠(yuǎn)程線上啟動(dòng)三種。
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); //指定處理方式批處理、流處理、自適應(yīng) env.setRuntimeMode(RuntimeExecutionMode.AUTOMATIC);
指定數(shù)據(jù)源
DataSettext = env.readTextFile("/path/to/file");
操作數(shù)據(jù)集
DataSet> counts = text.flatMap(_.toLowerCase.split(" ")) //實(shí)行map轉(zhuǎn)換 .filter(_.nonEmpty) //過(guò)濾控制 .map((_,1)) //執(zhí)行map轉(zhuǎn)換,轉(zhuǎn)換為key-value .keyBy(0) //按照指定第一個(gè)字段key進(jìn)行分區(qū), .sum(1); //分區(qū)后按第二個(gè)字段求和
指定結(jié)果輸出
counts.writeAsCsv(outputPath, "\n", " ");
指定名稱并觸發(fā)
env.execute("Streaming Count");
flink有豐富的數(shù)據(jù)類(lèi)型支持,統(tǒng)一由TypeInformation定義。支持與java、scala任意數(shù)據(jù)類(lèi)型轉(zhuǎn)換。
BasicTypeInfo類(lèi)型支持任意java基礎(chǔ)類(lèi)型和String類(lèi)型。
TupleTypeInfo描述Tuple類(lèi)型數(shù)據(jù),2019年版本支持字段上線為25個(gè)。
CaseClassTypeInfo支持任意Scala Case class,包括Scala tuples,2019年支持最大字段數(shù)為22個(gè)。
PojoTypeInfo描述任意POJO類(lèi)型,
POJO類(lèi)必須是public修飾的非內(nèi)部類(lèi)。
POJO類(lèi)必須含有默認(rèn)空構(gòu)造器
PoJO類(lèi)所有字段必須是public,類(lèi)型必須是flink支持的。
Value數(shù)據(jù)類(lèi)型實(shí)現(xiàn)了org.apache.flink.types.Value,其中包含read()和write()兩種序列化和反序列化操作。目前內(nèi)建類(lèi)型有IntValue、DoubleValue、StringValue。
scala中的List、Map、Either、Option、Try,java中Either,hadoop中Writable。
Flink作為新一代計(jì)算引擎,在實(shí)時(shí)計(jì)算領(lǐng)域有著及其重要的地位,同時(shí)也有這復(fù)雜的概念,時(shí)間窗口、水位線等,學(xué)習(xí)并理解成本不低。
看完上述內(nèi)容,你們掌握f(shuō)link原理和基本功能是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!