> 在 2020年6月29日,12:05,sunfulin <[email protected]> 写道:
> 
> 这种情况下推导PK貌似会报错(UpsertStreamTableSink requires full primary keys)。这种应该怎么写哈?

Hi,
在1.10.x 版本中,upsertSink 中推导 pk 是通过query 来推导,这个比较好的解决是等1.11发布后,通过在建表的DDL声明主键( 
PRIMARY KEY NOT ENFORCED), 如果要在1.10.x里解决,一般是改写下query,使得推导的pk能符合预期。这个写入es的sink要求 
pk 是简单类型,而你的query又需要ROW(c, d) 复合类型, 不太好改写。想到hack一点的方式就是把c,d 
拼接成一个字段c${delimeter}d,ROW(c, d)  用UDF构造,感觉这种也比较绕。如果业务上不是强需求ROW(c, 
d),又等不及1.11的话,可以在ES里多加一列就好了。

祝好,
Leonard Xu

回复