개인적으로는 엑셀보다는 SQL 쿼리문이 더 익숙하다. 그래서 검색어를 뭐로해야 하나 한참 헤멨는데 결국 해결방법을 찾았다. 쉽게 생각해서 동일한 포맷의 데이터를 하나로 합쳐야 할때가 종종 필요한데 이것을 하는 방법이다. 결론부터 말하면 VSTACK 함수를 써서 합칠수 있고, 중복된건 UNIQUE 함수를 쓰면 해결가능하다. VSTACK = UNION ALL SQL 에서는 UNION ALL 로 2개의 테이블을 하나로 묶어서 조회하는게 가능하다. 그럼 엑셀에서는 어떻게 사용하면 될까? VSTACK 함수를 사용하면 된다. 기본 사용법은 아래와 같고 수식 차체가 어려운것도 없다. =VSTACK(시트범위, 시트범위2, ... , 시트범위N) 이해를 돕기위해 예시를 들어 설명한다면 아래와 같다 (아래 이미지 참조) ..
운영체제에는 가상메모리라는 개념이 존재하고, 물리메모리가 부족하면 디스크에 저장을 해서 부족한 메모리를 커버한다. 그래도 부족하면 os 에서는 일부 프로세스를 강제로 kill 하는 상황이 발생되며, 의도치 않게 데몬이 죽는 케이스가 존재한다. 메모리 부족해서 프로세스가 kill 되었는지 확인하는 방법은 dmseg 커맨드를 쳐서 확인해보면, killed process 라는 정보를 확인할 수 있다. 그런데 모니터링 도구를 이용해 보면 서버에는 메모리 여유가 존재하는데 프로세스가 죽는 경우가 생길때가 있는데 이때는 swap 사용을 확인해보자. $ dmseg -H ... [ +0.000002] [19271] 500 19271 740064 16066 182 0 0 java [ +0.000001] [19438] 5..
참고로 아래와 같이 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 포맷을 많이 ..
커버로스 인증을 하려면 kinit 명령을 사용할 수 있어야 한다. 만약, 설치되어있지 않다면 아래와 같이 명령어를 찾을수 없다는 메시지가 출력될것이다. 이때는 kerberos 관련 모듈을 설치해야한다. $ kinit bash: kinit: command not found 설치방법 kinit 명령어가 없다면 centos 에서는 아래와 같은 명령어로 설치하면 된다. sudo yum install krb5-workstation krb5-libs krb5-auth-dialog -y 추가내용 kinit 실행파일이 생겼더라도, 인증서버 관련 정보가 정의된 /etc/krb5.conf 설정도 되어있어야 하는데, 별도의 경로에 존재하는 krb5.conf 를 사용하려면 환경변수를 지정하여 인증하는것도 가능하다. 보통 암호..
keberos 인증 기반의 hive 에서 맵핑을 삽질을 워낙 많이 해서 정리하고자 한다. 우선 airflow 의 connection 정보에 다음과 같이 정보 Hive Metastore Thrift 정보가 아래와 같이 입력했다고 가정한다. (참고로 테스트한 airflow 는 2.5.3 기반이었고, python 3.x 버전을 사용했다) 사실 NamedHivePartitionSensor 를 사용하기 위한 용도였고, 이때 필요한 연결이 Hive Metastore Thrift 정보였다. 테스트 방법 dag 를 만들어서 테스트하는것은 연결이 안될때 삽질하기 매우 어렵다. 그래서 NamedHivePartitionSensor 에서 사용하는 코드를 다음과 같이 직접 선언해서 정보를 가져오면 된다. (물론 AIRFLOW_..
웹에서 cross domain 문제를 쉽게 해결하기위해서 사용하기도 하고, 망구성에 따라서 reverse proxy 를 구성하여 사용하면 더 편리하게 운용가능한 경우가 종종 존재한다. 혹은 보안을 위해 외부 연결이 가능한 서버를 최소화하고 해당 서버를 경유해서 내부서버에 붙게 한다거나 뭐 어쨋든 이런걸 해야할 경우를 위한 가장 심플한 방법을 정리하고자 한다. 설치 및 기동 설치는 yum 을 통해 대부분 설치가 가능하며, 사용할때 nginx:nginx 의 유저와 그룹이 존재해야 정상동작된다. 만약, 운영하는 환경이 유저와 그룹을 생성하지 못하게 막아두었다면 해당 문제도 해결을 해야한다. nginx 의 기본 환경설정은 기본 경로는 /etc/nginx/conf.d/defulat.conf 이며, 이 설정을 변경..