成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

flink學(xué)習(xí)系列--基礎(chǔ)知識(shí)學(xué)習(xí)(四)

piglei / 856人閱讀

摘要:前言這一講將介紹一下序列化機(jī)制和過(guò)程函數(shù)。然而由于的類(lèi)型擦除,自動(dòng)提取并不是總是有效。開(kāi)發(fā)者在自定義類(lèi)上使用注解,隨后創(chuàng)建相應(yīng)的并覆蓋方法。

前言

這一講將介紹一下序列化機(jī)制和過(guò)程函數(shù)(processfunction)。

序列化機(jī)制

使用 Flink 編寫(xiě)處理邏輯時(shí),新手總是容易被林林總總的概念所混淆:

 為什么 Flink 有那么多的類(lèi)型聲明方式?
 BasicTypeInfo.STRING_TYPE_INFO、Types.STRING 、Types.STRING() 有何區(qū)別?
 TypeInfoFactory 又是什么?
 TypeInformation.of 和 TypeHint 是如何使用的呢?
 

接下來(lái)本文將逐步解密 Flink 的類(lèi)型和序列化機(jī)制(TypeInformation)。

Flink 的類(lèi)型系統(tǒng)源碼位于 org.apache.flink.api.common.typeinfo 包,讓我們對(duì)上圖TypeInformation深入追蹤,看一下類(lèi)的繼承關(guān)系圖:

可以看到,上面兩個(gè)圖片是一一對(duì)應(yīng)的,TypeInformation 類(lèi)是描述一切類(lèi)型的公共基類(lèi),它和它的所有子類(lèi)必須可序列化(Serializable),因?yàn)轭?lèi)型信息將會(huì)伴隨 Flink 的作業(yè)提交,被傳遞給每個(gè)執(zhí)行節(jié)點(diǎn)。

由于 Flink 自己管理內(nèi)存,采用了一種非常緊湊的存儲(chǔ)格式(見(jiàn)官方博文),因而類(lèi)型信息在整個(gè)數(shù)據(jù)處理流程中屬于至關(guān)重要的元數(shù)據(jù)。

TypeExtractror 類(lèi)型提取

Flink 內(nèi)部實(shí)現(xiàn)了名為 TypeExtractror 的類(lèi),可以利用方法簽名、子類(lèi)信息等蛛絲馬跡,自動(dòng)提取和恢復(fù)類(lèi)型信息(當(dāng)然也可以顯式聲明,即本文所介紹的內(nèi)容)。

然而由于 Java 的類(lèi)型擦除,自動(dòng)提取并不是總是有效。因而一些情況下(例如通過(guò) URLClassLoader 動(dòng)態(tài)加載的類(lèi)),仍需手動(dòng)處理;例如下圖中對(duì) DataSet 變換時(shí),使用 .returns() 方法聲明返回類(lèi)型。

這里需要說(shuō)明一下,returns() 接受三種類(lèi)型的參數(shù):字符串描述的類(lèi)名(例如 "String")、TypeHint(接下來(lái)會(huì)講到,用于泛型類(lèi)型參數(shù))、Java 原生 Class(例如 String.class) 等;不過(guò)字符串形式的用法即將廢棄,如果確實(shí)有必要,請(qǐng)使用 Class.forName() 等方法來(lái)解決。

聲明類(lèi)型信息的常見(jiàn)手段

通過(guò) TypeInformation.of() 方法,可以簡(jiǎn)單地創(chuàng)建類(lèi)型信息對(duì)象。

1. 對(duì)于非泛型的類(lèi),直接傳入 Class 對(duì)象即可

2.對(duì)于泛型類(lèi),需要借助 TypeHint 來(lái)保存泛型類(lèi)型信息

3. 預(yù)定義的快捷方式

例如 BasicTypeInfo,這個(gè)類(lèi)定義了一系列常用類(lèi)型的快捷方式,對(duì)于 String、Boolean、Byte、Short、Integer、Long、Float、Double、Char 等基本類(lèi)型的類(lèi)型聲明,可以直接使用。

4. 自定義 TypeInfo 和 TypeInfoFactory

通過(guò)自定義 TypeInfo 為任意類(lèi)提供 Flink 原生內(nèi)存管理(而非 Kryo),可令存儲(chǔ)更緊湊,運(yùn)行時(shí)也更高效。
開(kāi)發(fā)者在自定義類(lèi)上使用 @TypeInfo 注解,隨后創(chuàng)建相應(yīng)的 TypeInfoFactory 并覆蓋 createTypeInfo 方法。
注意需要繼承 TypeInformation 類(lèi),為每個(gè)字段定義類(lèi)型,并覆蓋元數(shù)據(jù)方法,例如是否是基本類(lèi)型(isBasicType)、是否是 Tuple(isTupleType)、元數(shù)(對(duì)于一維的 Row 類(lèi)型,等于字段的個(gè)數(shù))等等,從而為 TypeExtractor 提供決策依據(jù)。
更多示例,請(qǐng)參考 Flink 源碼的 org/apache/flink/api/java/typeutils/TypeInfoFactoryTest.java

Kryo 序列化
待研究中...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/75782.html

相關(guān)文章

  • Flink 從0到1學(xué)習(xí)—— 分享Flink 國(guó)外的書(shū)和二十多篇 Paper 論文

    摘要:另外,將機(jī)制發(fā)揚(yáng)光大,對(duì)有著非常好的支持。系統(tǒng)也注意到并討論了和的問(wèn)題??偨Y(jié)本文分享了四本相關(guān)的書(shū)籍和一份領(lǐng)域相關(guān)的論文列表篇,涉及的設(shè)計(jì),實(shí)現(xiàn),故障恢復(fù),彈性擴(kuò)展等各方面。 前言 之前也分享了不少自己的文章,但是對(duì)于 Flink 來(lái)說(shuō),還是有不少新入門(mén)的朋友,這里給大家分享點(diǎn) Flink 相關(guān)的資料(國(guó)外數(shù)據(jù) pdf 和流處理相關(guān)的 Paper),期望可以幫你更好的理解 Flink。...

    jollywing 評(píng)論0 收藏0
  • flink學(xué)習(xí)系列--基礎(chǔ)知識(shí)(一)

    摘要:前言最近因公司業(yè)務(wù)需求,需要使用到大數(shù)據(jù)分析。提供的可用于處理無(wú)盡的數(shù)據(jù)流。類(lèi)似于把一個(gè)記錄拆分成兩條三條甚至是四條記錄例如把一個(gè)字符串分割成一個(gè)字符數(shù)組。是一個(gè)聚合操作,如計(jì)數(shù)求和求平均等。實(shí)現(xiàn)把兩個(gè)流連成一個(gè)流。 前言 最近因公司業(yè)務(wù)需求,需要使用到大數(shù)據(jù)分析。選擇了flink,第一次聽(tīng)說(shuō)flink我也是很懵逼的狀態(tài),不過(guò)一段時(shí)間下來(lái)有了一點(diǎn)心得,在這里和大家分享分享。有很多描述不...

    Warren 評(píng)論0 收藏0
  • Flink 全網(wǎng)最全資源(視頻、博客、PPT、入門(mén)、實(shí)戰(zhàn)、源碼解析、問(wèn)答等持續(xù)更新)

    摘要:由于配置流是從關(guān)系型數(shù)據(jù)庫(kù)中讀取,速度較慢,導(dǎo)致實(shí)時(shí)數(shù)據(jù)流流入數(shù)據(jù)的時(shí)候,配置信息還未發(fā)送,這樣會(huì)導(dǎo)致有些實(shí)時(shí)數(shù)據(jù)讀取不到配置信息。從數(shù)據(jù)庫(kù)中解析出來(lái),再去統(tǒng)計(jì)近兩周占比。 showImg(https://segmentfault.com/img/remote/1460000019367651); Flink 學(xué)習(xí)項(xiàng)目代碼 https://github.com/zhisheng17/f...

    Dr_Noooo 評(píng)論0 收藏0
  • Flink Clients 源碼解析

    摘要:模塊中的類(lèi)結(jié)構(gòu)如下博客從到學(xué)習(xí)介紹從到學(xué)習(xí)上搭建環(huán)境并構(gòu)建運(yùn)行簡(jiǎn)單程序入門(mén)從到學(xué)習(xí)配置文件詳解從到學(xué)習(xí)介紹從到學(xué)習(xí)如何自定義從到學(xué)習(xí)介紹從到學(xué)習(xí)如何自定義從到學(xué)習(xí)轉(zhuǎn)換從到學(xué)習(xí)介紹中的從到學(xué)習(xí)中的幾種詳解從到學(xué)習(xí)讀取數(shù)據(jù)寫(xiě)入到從到學(xué) Flink-Client 模塊中的類(lèi)結(jié)構(gòu)如下: https://t.zsxq.com/IMzNZjY showImg(https://segmentfau...

    xiao7cn 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<