Hi,

1. 我说的 table 是指整个 table 模块,包括了 Table API 和 SQL。 SQL 也不会禁止。
3. 需要修改 HiveTableInputFormat 的实现,reachedEnd() 永远返回 false
4. 阿里内部没怎么遇到过这种需求。 疑问:作业启动后,你关联上了 global min/max/distinct 
value,作业运行一个月后,你还是关联上一个月前的 value 吗? 

Best,
Jark

> 在 2019年10月17日,10:43,去冒险吧 <[email protected]> 写道:
> 
> Hi ~,
> 
> 
> 谢谢解答。
> 
> 
> 1. 意思是table api 不禁止uid/uidhash?但sql会禁止?
>    我用于测试的样例是:
>    1. 
> env.addSource(kafkaSource).name('xxx').uid('myUid').map(...).toTable(...); 
>    2. tableEnv.register(table, ...);
>    3. tableEnv.sqlQuery(mySQL);
>    这样设置Source的uid会失效吗?我在WebUI上看到是没变的。设置其它属于如name是生效的。
> 
> 
> 2. 是的,提到的就是State Processor API, 目前看来我只能包装下让它来支持uidhash了。
> 
> 
> 3. 能大概说下如何让Hive Source 
> 不finish吗?我使用的是HiveCatalog,粗看下,框架当中检查reachedEnd的地方比较难Hack, 
> 是要包装HiveTableInputFormat类?
> 
> 
> 4. 回答你说的问题:我的作业都基于stream sql, 大部分只需要关联流数据,但少部分除了关联流数据,也需要考虑“历史"状态, 比如Only 
> emit global min/max/distinct  value,且不考虑retract。这种实践一般怎么”优雅“或者”平台透明”解决?
> 
> 
> 非常感谢。
> 
> 
> ------------------ 原始邮件 ------------------
> 发件人: "Jark Wu"<[email protected]>;
> 发送时间: 2019年10月16日(星期三) 下午4:04
> 收件人: "user-zh"<[email protected]>;
> 
> 主题: Re: Flink 1.9 SQL/TableAPI 设置uid及State 更新问题
> 
> 
> 
> Hi,
> 
> 
> 1. table 不禁止 uid/uidhash 的使用。
> 2. 你说的 Savepoint API 是指 State Processor API 吗?据我所知,目前只支持 uid。
> 3. 有一个方法是,让你的 hive source 不finish(会浪费资源,但能做 checkpoint)。
> 
> 有一个疑问,你的流作业任务只需要关联 static data吗?
> 据我所知,这种场景很少,因为 streaming job 一般都是 long run 作业,所以关联的也是会变得数据。
> 
> Best,
> Jark
> 
> 
> 
> On Wed, 16 Oct 2019 at 10:24, 去冒险吧 <[email protected]> wrote:
> 
>> Hi ~,
>> 
>> 
>> 在使用Flink 1.9
>> SQL时,需要结合外部大量数据与当前流进行Join、TopN和Distinct操作,考虑采用初始化相关Operator的State方法,遇到下面几个问题,麻烦解答下:
>> 1. 是否SQL或Table API是禁止设置uid或者uidhash的?包括对Kafka
>> DataStreamSource设置了uid或者uidhash也无效?
>> 2. 在不改变Graph下,对一个SQL Job 下某个GroupAggregator
>> Operator进行State更新,根据WebUI已经拿到uidhash,但SavePoint
>> API只允许传入uid,没有uidhash的方法,这个要怎么解决?
>> 3. 最终是要解决以下问题:需要Union/Join大量外部Hive数据 =》 因为存在Finished  Task
>> 导致整个Job没法做checkpoint。解决这类问题有相关的实践方案吗?
>> 
>> 
>> 非常感谢。

回复