
문제 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..

특정필드에서 검색 후, 검색결과가 있으면 해당 행을 색깔을 칠하고 싶은 경우가 있다. 이때 사용하는 엑셀 혹은 구글시트의 기능이 "조건부 서식" 이다. 그리고 미리 알아둬야하는 수식이 있는데, FIND 함수이다. 이 함수는 해당 필드의 문자열에서 검색어가 있으면 해당 위치를 숫자로 리턴한다. 예를 들어 "=FIND("버거킹", $A1)" 형태로 수식을 넣고 복붙하면 아래와 같이 못찾으면 숫자가 리턴안된다. 이걸 활용해서 수식으로 조건부 서식을 넣으면 된다는 말이다. 말로 복잡하니 바로 예시를 통해 알려주도록 하겠다. 예시 예를 들어, 다음과 같은 시트가 존재하고 PRODUCT(즉 N열) 에서 "팔찌" 라는 키워드가 있다면, 분홍 배경색을 칠하는걸 하고 싶다는 말이다. 이해를 돕기위해 샘플 데이터는 아래 ..
개요 희안하게 0건인 결과와 UNION ALL 하는 경우 null 오류가 발생했다. 더 특이했던건 hive client 에서는 쿼리가 성공하는데... jdbc 드라이버를 통하거나 beeline 을 통해서 쿼리를 날릴때만 발생했다는 점이다. (아마 두 설정에 차이가 있던건 아닌가 싶긴하다. Caused by: org.apache.hive.service.cli.HiveSQLException: Error while compiling statement: FAILED: NullPointerException null at org.apache.hive.service.cli.operation.Operation.toSQLException(Operation.java:315) at org.apache.hive.service..
개요 초창기 hdp 에서 hive 의 성능이 좋아진다면서 llap 를 지원하는 hive를 사용한적이 있다. 이때 llap 모드에서 쿼리가 실패했고, 컨테이너 모드로 바꿔서 실행했는도 다음과 같은 오류가 나서 골치아팠던적이 있다. 컨테이너 사이즈와 힙을 높게 할당했지만 그래도 OutOfMemoryError 가 발생했는데, 결국 삽질끝에 회피 방법을 찾긴 했다. - 오류 메시지 (컨테이너 모드 상태) Error: Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.tez.TezTask. Vertex failed, vertexName=Map 1, vertexId=ver..

개요 hive 에서 join 은 매우 느린 연산이다. 돌려본 사람은 알겠지만 join 이 들어간 경우 엄~~청 결과가 느려진다. 그래서 join 이 있는 쿼리를 튜닝해야할 일이 생길텐데 가장 손쉬운 방법은 broadcast join 을 사용하는것이다. (다른말로는 mapside join 이라고도 한다) 사용가능한 패턴은 "큰테이블 join 작은테이블" 의 경우에만 가능하지만, 일반적으로 이런패턴의 쿼리가 많아서 알아두면 많이 도움이 된다. 참고로 broadcast join 으로 유도하면 hive 에서 reduce 단계를 제거해서 50% 정도까지 시간이 단축될 수 있다. 사용방법 우선 연관된 설정이 3개가 있는데 다음과 같이 활성화 해주면 좀더 많은 케이스에 적용을 할 수 있다. 기본값이 약 20메가 수준..