Flink sql使用中報(bào)錯(cuò)問題以及解決

Flink sql 報(bào)錯(cuò)問題以及解決

記錄在使用Flink sql時(shí)出現(xiàn)的問題以及解決方式

1.時(shí)間戳問題

消費(fèi)kafka數(shù)據(jù),轉(zhuǎn)換成一個(gè)DataStream后,通過tableEnv進(jìn)行將DataStream的數(shù)據(jù)注冊成表,在執(zhí)行查詢的時(shí)候出現(xiàn)了報(bào)錯(cuò),后再進(jìn)入到官網(wǎng)查看,說需要傳入一個(gè)timestamp而我傳入的是一個(gè)BigInt,導(dǎo)致出現(xiàn)了報(bào)錯(cuò),

org.apache.flink.table.api.ValidationException: SQL validation failed. From line 1, column 121 to line 1, column 157: Cannot apply 'TUMBLE' to arguments of type 'TUMBLE(<VARCHAR(65536)>, <INTERVAL MINUTE>)'. Supported form(s): 'TUMBLE(<DATETIME>, <DATETIME_INTERVAL>)'
'TUMBLE(<DATETIME>, <DATETIME_INTERVAL>, <TIME>)'

這個(gè)問題我查找半天,我傳入了時(shí)間戳,而他要的是timestamp,后來去官網(wǎng)查找,由于官網(wǎng)沒有給具體的一個(gè)原因,后來我在Flink的釘釘?shù)腁pache Flink China社區(qū)群中,群中Committer大佬指出了問題


image.png

在我后來的代碼我中將元素中的時(shí)間戳 新加字段Timestamp類型,在注冊表的時(shí)候,將時(shí)間戳指定為rowTime,在后面就可以使用時(shí)間進(jìn)行窗口操作了

總結(jié)
也就是說我們直接使用時(shí)間戳是不行的,因?yàn)镕link會將我們的時(shí)間戳識別成BigInt,所以我們需要在創(chuàng)建之初需要將時(shí)間戳轉(zhuǎn)換成Timestamp類型才可以

具體代碼


image.png
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容