이번에 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"..
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..
하둡에서 권한관리가 되어있을때 나타나는 문제이다. 다음과 같이 hive catalog 를 등록하려고 했는데 다음과 같은 오류가 발생한다. 참고로 커버로스 인증으로 구성된 하둡 클러스터 환경에서 flink 유저를 만들어서 사용한 케이스이고, 원인은 Ranger 에서 flink 유저는 hive 의 warehouse 패스의 hdfs 접근이 제한되어있기 때문에 나타나는 현상이다. Flink SQL> create catalog myHive with( 'type' = 'hive' , 'hive-conf-dir' = '/usr/hdp/3.3.0/hive/conf'); [ERROR] Could not execute SQL statement. Reason: org.apache.hadoop.hive.metastore.ap..
테이블을 생성하려고 했는데 아래와 같이 "HiveAccessControlException Permission denied" 오류가 발생하면서 CREATE 를 실패한다면, 권한관리를 위해서 ranger 를 사용하고 현재 유저는 해당 db 경로에 권한이 없기 때문에 나타나는 현상이다. hive> create table if not exists info.t_user ( ID string comment '[K] 아이디' ,NAME string comment '이름' ,AGE int comment '나이' ,ADDRESS string comment '주소' ) comment '회원정보' stored as ORC tblproperties ("orc.compress"="ZLIB"); Error: Error while..
하둡 클러스터 이전을 위해 ETL 을 등록하는데 이상하게 old 서버에서는 잘되는게, new 서버에서는 너~~무 느린문제가 있었다. 일단 성능개선을 위해 동일한 Hive 버전도 아니었고, 플랜도 다르게 돌아가는 상황이라 답답한 상황이었다. 우선 결론부터 말하면 리듀서가 14~26개 정도가 할당되었는데, JOIN 과 카디널리티가 높은 Group By 였기 때문에 이정도수로는 어림도 없는 수준이었기 때문에 너무 오래걸린 문제였다. ---------------------------------------------------------------------------------------------- VERTICES MODE STATUS TOTAL COMPLETED RUNNING PENDING FAILED KI..
beeline 에서 쿼리를 잘 돌리다가 아래와 같은 오류가 발생하는 경우가 있다면 재접속을 해보자. beeline 실행시점에는 문제가 없었다가, HiveServer 가 재기동되거나 해서 세션이 끊긴지 모른상태에서 쿼리를 호출할 경우 아래와 같은 에러메시지를 낼 수 있다. 0: jdbc:hive2://myhive.myDomain.com:2181,p> select count(*) from sample.t_sample where ymd = '2023-02-01' group by hh24mi; Unexpected end of file when reading from HS2 server. The root cause might be too many concurrent connections. Please ask th..