10월, 2018의 게시물 표시

Gradle

코로나바이러스가 한창이다. 영화 컨테이젼을 보다가 gradle의 뜻을 깨달았다. 영화 마지막에 U2 노래가 흐르더라. ... from the cradle to the grave~

쿠두 insert operation을 이용한 update operation object 생성

아파치 플룸(apache flume)의 기능을 확장시키는 플러그인을 개발하고 있다. kudu에 대량의 데이터를 insert해야 하는데 primary key가 중복된 데이터가 있다. 다행히 kudu에는 upsert가 있어 중복 데이터 여부 관계없이 데이터를 밀어넣을 수가 있다. 이런 경우에는 primary key가 같다면 마지막에 upsert한 데이터만 남을 것이다. 만약, upsert 대신 insert를 사용한다면 처음 insert한 데이터만 남을 것이다. 만약, primary key 중복 오류로 insert에 실패한 행의 수를 센 후 update해야 한다면 다음의 함수를 사용한다. 찾아봐도 없어서 만들었다. /** * 중복행 오류로 Insert에 실패한 Operation을 update시키기 위해 row copy * @param insertOperation the operation that failed insert * @return update operation * @throws FlumeException */ private Operation getUpdateOperationFrom(Operation insertOperation) throws FlumeException { try { PartialRow rowInsert = insertOperation.getRow(); Schema schema = table.getSchema(); int schemaColumnCount = schema.getColumnCount(); List columns = schema.getColumns(); Operation operation = table.newUpdate(); PartialRow rowUpdate = operation.getRow();

자바에서 쿠두 테이블에 레인지 파티션 추가하기

아파치 플룸(apache flume)의 기능을 확장시키는 플러그인을 개발하고 있다. 레디스(redis)에서 데이터를 가져와 플룸 채널(flume channel)에 데이터를 채우는 소스(source) 기능과 플룸 채널(flume channel)에서 데이터를 가져와 쿠두(kudu) 테이블에 저장하는 싱크(sink) 기능을 구현하는 중이다. 그런데 쿠두 테이블에 저장하려는 데이터에 해당하는 파티션이 생성되어 있지 않을 경우 익셉션이 발생한다. 이 문제를 해결하기 위해 필요한 경우 파티션을 코드에서 직접 추가하기로 하였다. 아래처럼 복수의 칼럼으로 레인지 파티션이 설정되어 있는 경우에는 PARTITION BY RANGE (year, month, day) ( PARTITION VALUE = (2018, 10, 25), PARTITION VALUE = (2018, 10, 26), PARTITION VALUE = (2018, 10, 27), PARTITION VALUE = (2018, 10, 28) ) 다음과 같이 필요한 파티션을 추가해 준다. private void addRangePartitionsOnDemand() { logger.info("Add range partition on kudu table."); Schema schema = table.getSchema(); PartialRow lower = schema.newPartialRow(); PartialRow upper = schema.newPartialRow(); lower.addInt("year", 2018); lower.addInt("month", 10); lower.addInt("day", 29); upper.addInt("year", 2018);

영문 필사

이미지
헤밍웨이의 단편소설을 필사한다. THE SNOWS OF KILIMANJARO부터 시작. 순서는 다음과 같다. 1. 보고 쓰기(필사) 적정 분량을 미리 정한다.(하루 한 페이지 등) 한 문장 단위로 암기한 후 필사한다.(모르는 단어도 찾아본다) 원문과 비교한 후 틀린 부분을 표시한다. 미리 정한 분량이 끝난 후 틀린 부분만 반복한다. 2. 받아 쓰기 보고 쓰기 1~2회 혹은 3회까지 해 보고 자신이 생기면 오디오북으로 받아 쓰기를 시작한다. 한 문장 단위로 듣고 난 후 받아 쓴다. 3. 따라 읽기 오디오북으로 듣고 따라 읽는다. 적정 길이로 따라 읽기 후 익숙해지면 오디오북과 거의 동시에 읽을 수 있을 때까지 반복한다. 몽땅연필로 이면지에

쌀쌀한 아침, 자전거 출근길

자전거 손잡이를 잡은 손이 시리다. 깊어가는 가을.