301. TableFactory允许从基于字符串的属性创建不同的表相关实例。调用所有可用工厂以匹配给定的属性集和相应的工厂类。利用Java spi进行发现。
302. TableFactory接口或特质的方法有requiredContext和supportedProperties
303. 可以自定义TableSourceFactory来返回StreamTableSource,比如实现StreamTableSourceFactory
304. sql客户端也能使用TableFactory,可在yaml配置
305. 可以自定义连接器,需要实现ConnectorDescriptor接口,然后在tableEnv.connect()中使用
306. table&sql的用户定义函数,包括ScalarFunction、TableFunction、AggregateFunction
307. 不要将TableFunction实现为scala object,因为它是单例的,会导致并发问题
308. AggregateFunction需要实现createAccumulator()、accumulate()、getValue()方法。根据用例,可能还需要retract()、merge()、resetAccumulator()方法
309. FunctionContext的方法有getMetricGroup、getCachedFile、getJobParameter
310. ScalarFunction的open方法,使用FunctionContext作为参数。而close方法用于清理。
311. start-cluster.sh用于启动具有worker的本地集群
312. sql-client.sh embedded用于启动嵌入式独立进程,或连接到远程sql客户端网关来启动sql client cli,会读取sql-client-defaults.yaml
313. cli支持两种维护和可视化结果的模式,set execution.result-mode=table和set execution.result-mode=changelog
314. sql查询需要一个执行它的配置环境,也叫做环境文件,是一个yaml文件
315. cli会话中设置的属性(例如,使用set命令)具有最高优先级。cli commands>session 环境文件>默认环境文件
316. 可以在环境文件指定更细粒度的重启配置,包括以下策略:fallback、none、fixed-delay、failure-rate
317. sql客户端不需要maven或sbt依赖,而是直接用--jar或--library来添加依赖项提交给集群
318. flink sql支持视图,可以在yaml中定义,如views:…,或在cli会话中定义,如create view…,且会话环境定义的视图具有最高优先级
319. datastream和dataset api统称为core api,而table api是一种声明式的DSL,所以table api比core api更简洁,代码更少,甚至会优化程序,但它的表现力不如core api
320. 问题:datastream只有transformation算子,没有action算子?
321. 算子子任务的数量是该特定算子的并行度。同一程序的不同算子可能具有不同的并行级别。
322. flink使用流重放和检查点的组合来实现容错。
323. 批处理的容错不使用检查点,完全通过重放流来恢复。
324. dataset引入了特殊的同步,即超步