문제 다음과 같이 sql-client.sh 상에서 PostgreSQL 을 연동하려고 했는데 다음과 같은 오류가 발생했다. 이건 flink 의 문제가 아니라, PostgreSQL 에서 연결할때 문제가 되는것이다. 가장 손쉬운 해결은 java 옵션을 추가해서 재실행하는것이다. Flink SQL> CREATE CATALOG myDB WITH( > 'type' = 'jdbc', > 'base-url' = 'jdbc:postgresql://127.0.0.1:26257', > 'default-database' = 'mydb', > 'username' = '유저', > 'password' = '암호' > ); [ERROR] Could not execute SQL statement. Reason: javax.net.s..
문제 Flink 에서 기본적으로 제공하는 JDBC Connector 는 Mysql , Derby, PostgreSQL 3개지를 지원한다. 나는 sql-client.sh 를 통해서 쿼리기반으로 데이터를 다루는걸 자주 이용하는데 카탈로그 등록이 되서 바로 테이블을 접근할수 있어 연동하기 좋은데, 문제는 jsonb 타입을 지원하지 않는다. 추가로 내가 발견한 미지원되는 필드타입은 uuid 와 timestampz 필드이다. Flink SQL> describe MyTable; [ERROR] Could not execute SQL statement. Reason: java.lang.UnsupportedOperationException: Doesn't support Postgres type 'jsonb' yet Fl..
오류내용 dbeaver 와 같이 java 기반의 프로그램에서 postgreSQL 에 연결하려고 할때 오류메시지는 조금씩 다르더라도 다음과 같은 Exeption 오류가 난다면 실행할 때 다음과 같이 java 옵션을 주고 실행하면 된다. javax.net.ssl.SSLHandshakeException 해결방법 java 로 실행할 때 다음과 같은 옵션을 추가해서 실행하면 된다. java -Djdk.tls.client.protocols=TLSv1.2 ...생략... 이클립스 계열에서는 ini 파일에 java 실행옵션이 나열되어있는데, dbeaver 라면 dbeaver.ini 파일에 추가하면 해결된다.
데이터를 분석하기 위해서는 다양한 스토리지를 하나의 저장소로 모아야 하는 작업이 필요한 경우가 많다. 이때 처음에 데이터를 다 복사해와도 계속 변경되는 데이터가 생기기 때문에, 데이터를 동기화 해야 하는 이유가 생기기 마련이다. 이런문제를 해결하기위한 첫걸음은 변경분의 캡쳐 데이터를 (change data capture, CDC) 만들고, 이걸 어떻게 반영할것인가? 이것이 핵심이다. Flink 는 CDC 형태의 데이터 포맷 중 Debezium Format 을 기본지원한다. 이 포맷은 op, after, before 필드가 필수여야 한다. 근데 op 필드가 없는 CDC 포맷은 어떻게 처리할까? OP필드 없는 CDC 처리하기 사실 op 필드가 없어도 다음과 같이 추론이 가능하다. 그래서 OP 코드값을 찾을 ..
Flink 에서는 JDBC Connector 가 존재한다. 하지만 오피셜하게 지원되는 dbms는 총 3개 뿐이다. MySQL과 PostgreSQL 그리고 Derby ... https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/connectors/table/jdbc/ JDBC JDBC SQL Connector # Scan Source: Bounded Lookup Source: Sync Mode Sink: Batch Sink: Streaming Append & Upsert Mode The JDBC connector allows for reading data from and writing data into any relational databases..
로그파일이나 임시파일들이 계속 쌓일때 생성일기준으로 과거 데이터를 지우고 싶을때 가 종종있다. 이럴때 유용한게 ls 에서 날짜 포맷팅 하고 awk 에서 필터링후 xargs 로 삭제 명령의 인자로 보내는 형태로 처리한다. 예시 나 같은 경우는 1달전 로그를 지워야 하는 패턴을 많이 쓰게 되는데... 예를 들어 2021년 1월 이전데이터를 다 삭제 하고 싶다면 아래와 같이 명령어를 날리면 된다. # 2021년 1월 이전 데이터 제거 ls -l --time-style="+%Y%m" | awk '{if ($6< 202101 ) {print $7}}' | xargs rm -rf 당연한 소리지만, 삭제할 파일이 모인 폴더로 이동하고 날리면 된다. 1달이 아니라 일단위까지 필요하다면 time-style 은 +%Y%m..
개요 가끔 개발서버에서 설정파일이나 오류메시지 로그를 복사해오고 싶은 경우가 있다. 그럴때 가장 손쉽게 사용할 수 있는건, python의 SimpleHTTPServer 를 쓰면 정말 쉽게 복사 해올수 있다. 이게 의외로 유용한게 linux 서버에 python 이 왠만하면 기본 설치 되어있다보니 리눅스 서버의 파일을 급하게 복사해올 때 매우 유용하다. (심지어 포트도 지정가능하고) python -m SimpleHTTPServer [port] 보통 장애났을때 관련된 전체 로그를 메일로 전달해주거나, 딴 서버에 동일하게 세팅해야해서 설정파일을 복사하거나 할 때 의외로 유용하게 사용했다. (윈도우도 python이 설치되면 사용가능하다) 사용방법 예시 사용법은 아주 쉽다. 복사할 파일이 있는 폴더로 이동하고, "..
특정필드에서 검색 후, 검색결과가 있으면 해당 행을 색깔을 칠하고 싶은 경우가 있다. 이때 사용하는 엑셀 혹은 구글시트의 기능이 "조건부 서식" 이다. 그리고 미리 알아둬야하는 수식이 있는데, FIND 함수이다. 이 함수는 해당 필드의 문자열에서 검색어가 있으면 해당 위치를 숫자로 리턴한다. 예를 들어 "=FIND("버거킹", $A1)" 형태로 수식을 넣고 복붙하면 아래와 같이 못찾으면 숫자가 리턴안된다. 이걸 활용해서 수식으로 조건부 서식을 넣으면 된다는 말이다. 말로 복잡하니 바로 예시를 통해 알려주도록 하겠다. 예시 예를 들어, 다음과 같은 시트가 존재하고 PRODUCT(즉 N열) 에서 "팔찌" 라는 키워드가 있다면, 분홍 배경색을 칠하는걸 하고 싶다는 말이다. 이해를 돕기위해 샘플 데이터는 아래 ..