Flink 에서 Window 단위로 데이터를 다루려면 워터마크를 지정해야하고, 워터마크를 지정하기위해서 TO_TIMESTAMP_LTZ 함수를 써서 날짜타입으로 전환해서 사용해야 하는 경우가 종종 있다. 보통 EpochTime 이 들어있는 필드를 쓴다면 아래와 같은 형태로 워터마크를 선언하려고 할것이다. CREATE TABLE source_table { ... rowtime AS TO_TIMESTAMP_LTZ(logTime, 6), // logTime 의 단위는 microsec WATERMARK FOR rowtime AS rowtime } WITH { ... }; 그리고, 원본의 logTime 필드의 값이 microsec 이라서 정밀도값을 6으로 지정하면 다음과 같은 오류가 발생한다. org.apache...
flink 에서는 create table like 구분이 있어서, 필드가 동일한 필드를 상속받듯이 필드선언을 할 수 있다. 하지만 alter table 에 대한 document 를 확인해보면, 테이블의 이름과 테이블 속성값만 바꿀수 있다. https://nightlies.apache.org/flink/flink-docs-master/docs/dev/table/sql/alter/#alter-table 재밌는건, table api 에는 addColumns, AddOrReplaceColumns, DropColumns 가 지원되지만, sql 로는 이걸 사용할수 없다는점이다. 그럼 flink 에서 sql 로 필드를 변경하는 방법은 정말 방법이 없을까? https://nightlies.apache.org/flink..
결론부터 말하면, 이 현상은 checkpoint 관련 설정을 적용하고서 나타난 현상이었다. checkpoint 를 모르는 사람을 위해 간단히 쉽게 설명하면 자동세이브 기능을 생각하면 쉽다. 장애의 복구를 위해 중간중간 상태정보를 주기적으로 남기는 기능을 의미하는데, 이 주기가 도달하기전까지 결과를 지연시키는게 아닌가 싶다. 결과를 보려면? 내가 겼었던 쿼리 결과가 안나오는 현상은 checkpoint 에서 영향을 받았던 케이스 이기 때문에, 해당설정을 잠깐 줄여서 쿼리를 다시 실행하면 해결되었다. 설정을 영구하게 바꿀게 아니다보니 flink-conf.yaml 의 설정을 건드리는게 아니라 sql-client.sh 상에서 "set" 명령을 통해 확인 및 변경하는것이 좋다. (checkpoint 가 너무 자주 ..