개인적으로는 엑셀보다는 SQL 쿼리문이 더 익숙하다. 그래서 검색어를 뭐로해야 하나 한참 헤멨는데 결국 해결방법을 찾았다. 쉽게 생각해서 동일한 포맷의 데이터를 하나로 합쳐야 할때가 종종 필요한데 이것을 하는 방법이다. 결론부터 말하면 VSTACK 함수를 써서 합칠수 있고, 중복된건 UNIQUE 함수를 쓰면 해결가능하다. VSTACK = UNION ALL SQL 에서는 UNION ALL 로 2개의 테이블을 하나로 묶어서 조회하는게 가능하다. 그럼 엑셀에서는 어떻게 사용하면 될까? VSTACK 함수를 사용하면 된다. 기본 사용법은 아래와 같고 수식 차체가 어려운것도 없다. =VSTACK(시트범위, 시트범위2, ... , 시트범위N) 이해를 돕기위해 예시를 들어 설명한다면 아래와 같다 (아래 이미지 참조) ..
참고로 아래와 같이 security.protocol 이 SASL_PLAINTEXT kafka 를 연동했을때 나타났던 문제이다. kafka 의 토픽을 맵핑한 ddl 문과 에러메시지 이다. beeline> CREATE EXTERNAL TABLE kafka_table ( foo STRING, bar STRING ) STORED BY 'org.apache.hadoop.hive.kafka.KafkaStorageHandler' TBLPROPERTIES ( "kafka.bootstrap.servers" = "10.1.1.1:9092", "kafka.topic" = "sample_topic", "kafka.serde.class" = "org.apache.hadoop.hive.serde2.JsonSerDe", 'kafk..
hive 에서 kafka 를 쉽게 연동해서 사용할 수 있어서, 꽤 유용하게 쓸수 있다. 그런데, 하둡클러스터는 kerberos 인증을 사용하고 kafka 는 다른 인증방식을 사용할 경우 어떻게 사용해야하는지 readme.md 문서를 뒤져봐도 친절하지가 않다. 그래서 관련된 선언방법과 주의사항을 안내하려고 한다. https://github.com/apache/hive/blob/master/kafka-handler/README.md 문제점 우선 org.apache.hadoop.hive.kafka.KafkaStorageHandler 를 사용가능하다는 전제로 설명하도록 하겠다. 보통 kafka 의 인증정보를 다음과 같이 표현하여 사용하는데... 아래 정보를 table 선언할때 어떻게 맵핑하는지 정리가 안되어있어..
사실 Kafka 의 데이터를 활용할 때, KafkaStrems 를 사용해서 consumer 를 만들거나, ksql 을 쓰거나 혹은 spark 를 쓰는게 일반적이다. 하지만, 실시간성으로 데이터를 다루는게 아니라, 조금 지연되더라도 배치기반으로 처리하고, 그 결과를 아카이빙 할 수 있도록 유지보수하는 요구사항도 꽤 많은데 이럴때는 기냥 hive 에서 KafkaStorageHandler 를 사용하는게 훨씬 간편하다. 기본내용 hive 에서 KafkaStorageHandler 를 사용하는건 아래 문서를 참고하면 된다. https://github.com/apache/hive/blob/master/kafka-handler/README.md 보통 kafka 에 데이터를 적재할때, JSON 과 AVRO 포맷을 많이 ..
keberos 인증 기반의 hive 에서 맵핑을 삽질을 워낙 많이 해서 정리하고자 한다. 우선 airflow 의 connection 정보에 다음과 같이 정보 Hive Metastore Thrift 정보가 아래와 같이 입력했다고 가정한다. (참고로 테스트한 airflow 는 2.5.3 기반이었고, python 3.x 버전을 사용했다) 사실 NamedHivePartitionSensor 를 사용하기 위한 용도였고, 이때 필요한 연결이 Hive Metastore Thrift 정보였다. 테스트 방법 dag 를 만들어서 테스트하는것은 연결이 안될때 삽질하기 매우 어렵다. 그래서 NamedHivePartitionSensor 에서 사용하는 코드를 다음과 같이 직접 선언해서 정보를 가져오면 된다. (물론 AIRFLOW_..
이번에 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"..