impala 에서 parquet 테이블을 보정할 일이 있어서, CTAS로 일부분만 백업해두고 혹시 문제가 있는지 쿼리를 해봤는데 다음과 같은 에러가 발생했다. Error converting column: 126 to DOUBLE Error parsing row: file: hdfs://cluster01/user/hive/warehouse/imp.db/tab_dpcn_info_l/a7422143a7852306-8b0cbcb600000005-1957752130_data.0, before offset: 629145600 에러 메시지 자체는 126번 컬럼을 DOUBLE 로 형변환 하는데 실패했고 해당 문제가 발생한 데이터가 위 hdfs://.. 경로에, offset 번째 줄에 있다는 내용인데, […]
[impala] rpad와 아스키 코드를 이용한 인덱스 컬럼 범위 검색
rpad 문법은 rpad(A,N,B) 와 같이 썼을 때, 전체 문자열 길이가 N 만큼 되도록 B 문자열을 붙여준다. 때문에 fixed-width 컬럼의 값이나 검색 조건을 만들어내는 데에 사용할 수 있다. 우리 시스템에서는 특정 이벤트를 식별하기 위해서 맨 앞 열 여섯 자리는 해당 이벤트 발생 시간이면서 33 자리인 id를 키로 사용하고 있는데 이 때에 rpad 를 활용하면 유용하다. 특정 […]
[Impala] PARQUET_FALLBACK_SCHEMA_RESOLUTION 설정과 Parquet 테이블의 Schema Evolution
하나의 Impala 테이블은 여러개의 Parquet 파일로 구성될 수 있는데, 이때 각 파케이 파일들의 컬럼 순서가 다를 수가 있다. 임팔라만을 이용해서 파케이 파일을 생성했다 하더라도 기존에 없던 컬럼이 이후에 rename 되는 경우 또는 다른 방식으로 생성된 파케이 파일을 impala 에서 추가로 로드하는 경우에 이런 상황이 발생할 수 있을 것 같다. 어쨋든 다음과 같은 에러가 발생하는 경우 […]
[Vim] Multi-line Search 로 여러 줄에 걸친 패턴 검색
Vim에서 여러줄에 걸쳐서 발생하는 패턴을 검색하기 위해서는 약간 다른 정규표현식을 사용해야한다. 메타문자 등이 있을 때 그 바로 앞에 \_ 문자열을 더해주면 되는데, 아래와 같이 자주 사용되는 표현을 예로 들자면 . ^ $ \s 다음과 같이 바꿔서 써줄 수 있고 \_. \_^ \_$ \_s [^A] 와 같은 문자열 클래스도 \_[^A] 로 변형해서 사용할 수 있다. 만약 […]
[Linux] PROMPT STATEMENT – PS1, PS2, …, PS4
맥 기본 터미널 기본 설정의 PS1은 현재 위치를 보여주지 않는다. 개인적으로 우분투에서의, scp remote 경로와 비슷한, 형태를 좋아하기 때문에 우분투에서의 것처럼 바꿔두었는데 (export PS1="\h:\W \u\\$") Linux와 Mac 에서의 기본 PS1 설정은 다음과 같고 Linux \s-\v\$ Ubuntu \h:\W \u\\$ Mac [\u@\h \W]\$ PS1 에서 사용할 수 있는 포매터는 아래와 같은 것들이 있다. Expression Output \t 24시 […]
[Bash] Crontab 못쓸때 작업 예약해놓고 퇴근하기
[Bash] Crontab 못쓸때 작업 예약해놓고 퇴근하기 금요일 저녁 늦은 시간 하던 bash 작업이 다 끝나지 않았을 때, 다음주 월요일에 출근했을 때 작업이 끝나있기를 바라는 마음에서 만들어봤는데 꽤 유용하게 쓸 수 있을 것 같다. crontab 이란 좋은 유틸이 있기는 해도 내 맘대로 막 등록하고 할 수는 없으니까 꼭 금요일이 아니더라도, 새벽 배치 집중시간을 피해 출근 전에 […]
[MySQL] WITH RECURSIVE 구문을 이용한 Row Generator
MySQL 에서는 아래와 같이, Oracle 에서처럼, 간단하게 리스트 데이터를 생성해내는 문법이 없다. SELECT LEVEL FROM DUAL CONNECT BY LEVEL < 9; 오라클에서는 connect by를 이용해서, 데이터를 추출할때 조인걸어 쓰거나 간단하게 테스트 데이터를 만들 때 유용하게 쓸 수 있었는데 다른 RDBMS에서는 기본 지원되지 않아 아쉽다. PostgreSQL 에서도 generate_series(1,n) 을 이용해서 range list 를 만들어 줄 수 […]
[Gmail] 검색 연산자
하나의 구글 계정 안에 회사 메일, 학교 메일, 개인 도메인 메일까지 당겨왔었고, 라벨링까지 해가며 나름 메일을 잘 활용했었는데 회사를 이직하고나서부터는 개인 지메일을 많이 사용하지 않게 되었다. 전 회사에서는 인터넷 망에서 자유롭게 메일이 가능했기 때문에 회사 메일을 개인 gmail 로 당겨와서 관리를 했었고 또 업무를 보려면 무조건 메일을 확인했어야했기 때문에 수신함에 읽지않은 메일이 10건을 넘어가는 적이 […]
[WordPress] Brute Force 로그인 공격 방어
웹서버 운영자라면 하루에 한번씩은 꼭 서버 모니터링을 해봐야할 것 같다. 한동안 wordress 서버 관리를 안 하다가 오랜만에 서버에 접속해봤는데, 세상에 secure 로그에 수 만 번 이상의 말도 안되는 로그인 시도가 감지되어 있었다. ssh에는 기본적으로 포트포워딩을 해뒀기 때문에 기본 포트(22)가 아닌 다른 포트로 접속 시도를 했다는 것 자체가 일단 충격적이었다. 그리고 아래와 같이 sshd 데몬 설정에서 […]
[WordPress] customized theme 업데이트
워드프레스를 이용하는 장점 중 하나가 수많은 디자이너, 개발자들이 만들어놓은 테마가 있어서 웹사이트 컨셉에 맞는 것을 골라 적용만 하면 된다는 것이다. 물론 완벽하게 내 입맛에 맞는 테마를 찾을 수는 없고 영미권 지역을 대상으로한 것이 대부분이기 때문에, 큰 틀만 맞으면 가져다가 커스터마이징 해서 사용하고 있다. 플러그인을 이용한다면 테마는 원본 그래도 놔두고 스타일시트, 외부 라이브러리 링크, functions 따위를 […]