이번에 streamsets 를 통해 생성된 스트리밍 데이터를 마이그레이션 할 일 이 있어서 테스트해본 간단한 데이터이다. 참고로 avro 포맷에 스트림으로 처리되다보니 파일갯수는 많은 편이었다. 이때, json 텍스트가 많은 A 테이블과, 일반적인 필드값 수준의 B 테이블이 존재해서 몇가지 압축알고리즘별 실험을 해보았다. 참고로, hive 에서 지원하는 avro 압축알고리즘은 snappy, bzip2, deflate 등이 존재한다. (xz 압축은 테스트 실패함) https://github.com/apache/avro/blob/master/lang/java/avro/src/main/java/org/apache/avro/file/CodecFactory.java#L33-L36 AVRO 압축 하여 저장하는 방법..
HUE 에서는 hive 에 연결하기위해서 beeswax 를 사용하고, 해당 download_row_limit 설정값이 100000 으로 기본 세팅되어있기 때문이다. 해당 값을 늘려서 적용하면 10만건 이상 보는것이 가능하다. https://github.com/cloudera/hue/blob/master/desktop/conf.dist/hue.ini#L1404-L1406 [beeswax] # A limit to the number of rows that can be downloaded from a query before it is truncated. # A value of -1 means there will be no limit. download_row_limit=100000 해결방법 위 설정값을 크게 늘..
kafka 의 데이터를 다룰때 일반적으로 spark, flink, kafka-streams 등 다양한 도구를 사용하지만, 사실 배치기반으로 데이터를 가볍게 조회하고 배치를 돌려보기에는 hive 에서 kafka 를 직접 붙여보는게 가장 손쉽다. 어떻게 사용할까? 사실 이 내용은 readme 문서에도 잘 정리되어있다. https://github.com/apache/hive/blob/master/kafka-handler/README.md 만약, kafka 에 들어있는 파일포맷이 아래와 같은 json 포맷이라면, key 값을 테이블의 필드로 나열하면 된다. 예를 들어, sample_topic 에 아래와 같은 형태의 json 값이 존재한다면 {"name": "gildong", "age": 12, "address"..
python 에서 pip 로 빌드할때 필요한 모듈이 꽤 존재한다. 그래서 아예 자주 쓰는 케이스의 모듈은 아래와 같이 미리 설치하고 생각하면 좀더 편하다 -_- sudo yum install gcc openssl-devel bzip2-devel libffi-devel zlib-devel python-devel python3-devel gcc-c++ cyrus-sasl-devel -y 그러면 아래와 같은 오류들은 한방에 피할수 있다. 2023.06.05 - [개발/python] - [PIP] fatal error: Python.h: No such file or director 오류 해결 방법 (centos) 2023.06.06 - [개발/python] - [PIP] gcc: error trying to e..
pip install sasl 을 설치하는데 아래와 같은 오류가 발생했다. 이 문제를 해결하려면 gcc-c++ 을 설치하면 해결된다. .... #0 0.969 creating build/temp.linux-aarch64-2.7 #0 0.969 creating build/temp.linux-aarch64-2.7/sasl #0 0.969 gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pi..
PyHive 모듈을 테스트하려고 sasl 모듈을 설치하는데 아래와 같은 오류가 발생했다. 이런 이유가 나는건 Python 라이브러리중 일부는 직접 빌드를 해야하기 때문에 gcc 같은 컴파일도구가 존재해야 하거나, 의존된 c 라이브러리가 있어야 설치되는 경우가 종종 있다. 하지만 여기서 나온 에러는 python devel 패키지가 없기 때문이고 이를 설치해주면 된다. fatal error: Python.h: No such file or directory $ pip install sasl==0.3.1 Collecting sasl==0.3.1 Using cached sasl-0.3.1.tar.gz (44 kB) Preparing metadata (setup.py) ... done Requirement alre..
airflow 에서는 WebHdfsSensor 라는게 존재해서, api 를 통해 특정파일이 존재하는지 체크하고 loop 를 돌면서 체크하는 방법이 존재한다. 그렇다면 간단하게 쉘스크립트로 특정 파일이 생겼는지 확인하는 방법은 없을까? 결론부터 말하면 hadoop 명령어에 파일 존재여부를 테스트하는 명령어가 존재한다. 아래와 같이 명령하면 exit 코드가 0일 경우는 파일이 존재하지만, 그 이외에는 파일을 찾을수 없다는 의미가 된다. 하지만, 파일이 생성될때까지 sleep 하면서 기다리는 방법은 없을까? hadoop fs -test -f hdfs 파일 생성여부 대기하기 위 방법을 응용하면, loop 를 돌리고 파일이 존재할때까지 sleep 을 주면서 주기적으로 체크하는것이 가능해진다. 이러면 특정 HDFS..
hive 테이블의 경우, 파일포맷(text, parquet, rcfile, sequence, orc) 별로 테이블을 선언하는 쿼리가 조금씩 차이가 있어서 create table 하는 방법과, 테이블의 파일포맷별 압축 알고리즘(gzip or zlib, snappy)을 선택하는 방법이 달라서 정리한 문서이다. (옛날에 방치된 내 블로그에 정리한글인데 옮겨옴) 1. text 파일 아래와 같이 text 파일 포맷을 사용하는 Hive 테이블을 만들때는 특별히 선언할것은 없다. 단, 압축을 하기위해서 압축알고리즘을 지정하는 방법은 SET 을 통해 환경변수로 변경후 insert 를 하면 된다. create table tb_text ( ymd String, tag String, cnt int ) ROW FORMAT D..