flink的table/sql api的多种写法汇总
這個(gè)記載是為了方便轉(zhuǎn)化網(wǎng)絡(luò)中各種資料的寫(xiě)法,
所以每個(gè)階段都收集了各種寫(xiě)法.
并且用代碼進(jìn)行了運(yùn)行驗(yàn)證.
?
DataStream<OrderStream> orderA = env.fromCollection(Arrays.asList(
? ? ? ? ? ? new OrderStream(1L, "beer", 3, Timestamp.valueOf("2017-09-16 10:30:00")),
? ? ? ? ? ? new OrderStream(3L, "rubber", 2,Timestamp.valueOf("2017-09-16 10:10:00")),
? ? ? ? ? ? new OrderStream(1L, "diaper", 4,Timestamp.valueOf("2017-09-16 10:20:00"))
? ? ));
?
| 步驟 | 寫(xiě)法 |
| 初始化環(huán)境 | StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); StreamTableEnvironment tEnv = StreamTableEnvironment.create(env); |
| 建立表格 | 下面4種寫(xiě)法大多數(shù)情況下完全等效(任選1種即可) ①tEnv.registerDataStream("orderA", orderA, "user,product,amount"); ? ②Deprecated寫(xiě)法 tEnv.createTemporaryView("orderA", orderA, "user,product,amount"); ? ③ 最新寫(xiě)法,②的替代寫(xiě)法 tEnv.createTemporaryView("orderA", orderA, $("user,product,amount"));
Table tableA = tEnv.fromDataStream(orderA, "user,product,amount"); ? ⑤當(dāng)后續(xù)有使用as函數(shù)的需要時(shí),必須采用下面這種寫(xiě)法,此時(shí)禁止采用③的寫(xiě)法 tEnv.createTemporaryView("Orders", orderA, $("user"), $("product"), $("amount")); |
| 注冊(cè)UDF | 下面3種寫(xiě)法完全等效(任選1種即可) ①tEnv.registerFunction("hashcode", new HashCode(10));
? ③tEnv.createTemporarySystemFunction("hashcode", new HashCode(10)); ? ②③在概念上肯定會(huì)有差別,但是一般應(yīng)用中,效果沒(méi)區(qū)別. |
| SQL查詢與輸出 | 下面4種寫(xiě)法完全等效(任選1種即可) ①需要注冊(cè)UDF 的情況下 Table result = tEnv.from("orderA").select("product,hashcode(product)"); ? ②需要注冊(cè)UDF 的情況下 Table result=tEnv.from("orderA").select($("product"),call("hashcode","product")); ? ③需要注冊(cè)UDF 的情況下 Table result=tEnv.sqlQuery("select product,hashcode(product)?from orderA"); ? ④需要注冊(cè)UDF 的情況下 tableA.select($("product"),call("hashcode","product")).execute().print();
? ⑤不注冊(cè)UDF情況下,直接使用UDF Table result=tEnv.from("orderA").select($("product"),call(HashCode.class,"product")); ? ? ? |
?
把上述步驟中,每個(gè)步驟任意抽取一個(gè),拼接起來(lái),
就能構(gòu)成完整的Flink SQL程序.
?
Reference:
[1]Flink基礎(chǔ)(二十):Table API 和 Flink SQL(五)函數(shù)
總結(jié)
以上是生活随笔為你收集整理的flink的table/sql api的多种写法汇总的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Cannot resolve field
- 下一篇: createTemporaryView