FlinkSQL提供了連接外部數(shù)據(jù)的方法拳魁,即通過建立Flink表與外部數(shù)據(jù)關(guān)聯(lián)起來。其中最基本的連接方式為普通動(dòng)態(tài)表連接撮弧,普通動(dòng)態(tài)表允許讀取外部數(shù)據(jù)以及輸出數(shù)據(jù)至外部系統(tǒng)潘懊。
概念
普通動(dòng)態(tài)表是FlinkSQL中的一類表,表中的數(shù)據(jù)與連接的外部數(shù)據(jù)對(duì)等贿衍,可以簡(jiǎn)單理解為把一張mysql的表放進(jìn)flink內(nèi)存中得到的表授舟,并且該表與mysql表有連接關(guān)系,即該表可以讀寫mysql表贸辈。
使用方式
需要聲明表的字段定義和表屬性(連接器屬性)释树。語(yǔ)法如下:
CREATE TABLE myTable (
myColumn1 int,
myColumn2 string...
)WITH (
'connector'='jdbc',
'url'='...',
'username'='...',
'password'='...'
)
with關(guān)鍵字前面的是字段定義,with關(guān)鍵字后面的是表屬性裙椭。其中字段定義時(shí)還可以聲明表主鍵躏哩,聲明語(yǔ)法為PARIMARY KEY(myColumn1,...) NOT ENFORCED, 這里的not enforced表示flinksql不會(huì)對(duì)主鍵做強(qiáng)制的唯一性約束、非空約束揉燃,而且目前flinksql中只支持這種類型的主鍵扫尺。
表屬性中有若干個(gè)屬性字段需要聲明,具體有哪些屬性字段取決于使用哪個(gè)連接器炊汤,如上述聲明中使用的是jdbc連接器正驻,在使用該連接器時(shí)需要提供url、username抢腐、password等屬性姑曙,通過此連接器我們就可以讓該表能連接到對(duì)應(yīng)的mysql表。
查詢數(shù)據(jù)
我們可以查詢flinksql普通動(dòng)態(tài)表的數(shù)據(jù)迈倍,此數(shù)據(jù)與連接的外部數(shù)據(jù)是一致的伤靠。語(yǔ)法如下:
SELECT ... FROM myTable ...
tips:在運(yùn)行時(shí),只會(huì)加載一次外部數(shù)據(jù)到flinksql普通動(dòng)態(tài)表啼染。后續(xù)外部數(shù)據(jù)表有更新時(shí)宴合,flinksql的普通動(dòng)態(tài)表不會(huì)跟著自動(dòng)更新焕梅。
輸出數(shù)據(jù)
我們可以把數(shù)據(jù)寫入到flinksql動(dòng)態(tài)表,從而實(shí)現(xiàn)寫入數(shù)據(jù)到外部系統(tǒng)的目的卦洽。語(yǔ)法如下:
INSERT INTO myTable ...