하이브는 기본적으로 폴더 구조이기 때문에 다른쪽에서 처리한 데이터나, 기존에 백업해둔 파일을 복사해서 사용할 수도 있다. hadoop fs -put 명령을 이용하여 기존 파티션 위치에 동일하게 복사하면,데이터 조회가 가능하다. 이때 기존에 등록되어 있던 파티션인 경우는 상관없지만,추가되는 경우 파티션을 새로 등록해주어야 한다. ALTER TABLE ADD PARTITION 명령으로 개별적으로 추가해 줄 수도 있지만, 추가해야할 파티션이 많은 경우 다음의 명령을 이용하여 한꺼번에 처리하면 된다. MSCK REPAIR TABLE table_name;ALTER TABLE table_name RECOVER PARTITIONS; 위의 두 명령중 하나를 이용하면 테이블의 로케이션을 검색하여 파티션을 추가해준다. A..
리눅스를 사용하다 보면 아래의 메시지가 올 때가 있다. You have new mail in /var/spool/mail/ 이는 보통 크론탭으로 걸어놓은 프로그램에 문제가 있을때 발생한다. 처리 방법은 다음과 같다. 1. mail 이라고 치면 수신한 메일을 확인할 수 있다. 2. 메일 앞의 번호를 입력하면 해당 메일 확인이 가능하다. 3. 확인한 메일의 내용으로 오류를 처리한다. 4. 다 읽은 메일은 d [번호]-[번호] 명령으로 삭제하면 된다.
정올, 그리디 알고리즘의 도서관 문제 http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1508&sca=3020 정올 도서관은 학생들을 위하여 항상 열려있다. 학생의 입장에서는 아무 때든 도서관을 찾아 공부할 수 있어 편리하지만 정올 도서관의 입장에서는 그리 효율적이지 못했다. 학생이 몇 명 되지 않는 시간에도 모든 시설을 열어야 하며 심지어 학생이 오지 않는 시간에도 도서관을 열고 있어야 했다. 이러한 문제점을 개선하고자 도서관 관리자인 창환이는 학생들의 도서관 이용 시간을 분석하고자 한다. 먼저 하루 중 도서관에 학생들이 머물고 있는 가장 긴 시간과 학생들이 다녀간 전체 시간 중 학생이 하나도 없었던 가장 긴 시간을 알아보는 것이다. 예를 들어,..
더블릿의 예산 문제 http://59.23.113.171/pool/koi_budget/koi_budget.php?pname=koi_budget 프로그램 명: koi_budget제한시간: 1 초국가의 역할 중 하나는 여러 지방의 예산요청을 심사하여 국가의 예산을 분배하는 것이다. 국가예산의 총액은 미리 정해져 있어서 모든 예산요청을 배정해 주기는 어려울 수도 있다. 그래서 정해진 총액 이하에서 가능한 한 최대의 총 예산을 다음과 같은 방법으로 배정한다.(1) 모든 요청이 배정될 수 있는 경우에는 요청한 금액을 그대로 배정한다.(2) 모든 요청이 배정될 수 없는 경우에는 특정한 정수 상한액을 계산하여 그 이상인 예산요청에는 모두 상한액을 배정한다. 상한액 이하의 예산요청에 대해서는 요청한 금액을 그대로 배정..
더블릿의 배송 문제는 다음과 같이 해결한다. 위와 같은 경우입니다. 답은 150인데, 현재 소스는 120을 출력하고 있습니다. 즉, 처음 선택할때 1 6 40에 해당하는 40에서 30만큼을 선택하기 때문에 끝날때까지 택배 가방(님이 가방으로 표현하셔서 그렇게 얘기하겠습니다 ㅋ) 용량이 30으로 밖에 유지될 수 없어서 중간에 크게 옮겨실어나를수 있음에도 불구하고 계속 용량 30밖에 못사용하는거죠. 그럼 어떻게 하냐... s에서 택배꾸러미를 받아서 e에서 택배를 내려놓는다고 할때 s에서부터 e-1까지 해당 택배꾸러미를 계속 들고 있어야 합니다. (e는 내려놓는곳이니까 제외하죠) 해당 택배꾸러미의 용량을 w라고 하면 s부터 e까지는 택배를 기본 여유용량 C에서 w만큼 뺀 것입니다. 즉, 예를 들면 원래 가방용..
하둡 처리중 다음과 같은 에러가 발생하는 경우가 있다. Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /tmp/hive/blablabla.... could only be replicated to 0 nodes instead of minReplication (=1). There are 3 datanode(s) running and no node(s) are excluded in this operation. 이런 경우 다른 분들의 포스트를 확인해 보면 다들 네임노드를 포맷하라고 되어 있다. 에러의 내용상 데이터노드에 해당 데이터를 ..
하이브에서 작업중 아래의 오류로 인하여 작업이 중단 되는 경우가 있다. cause:java.io.IOException: No input paths specified in job 이럴때는 두가지 경우인것 같다. 1. MR 작업할 위치에 원천 로그 파일이 없을때2. SELECT 문의 WHERE 조건으로 인하여 조회되는 건수가 0건 일때 즉, 입력할(INSERT) 데이터가 없을 때 발생한다. 이럴경우 데이터가 없어도 처리하게 하면, 에러를 내지 않고 처리한다. set hive.merge.mapfiles=false; https://svn.apache.org/repos/asf/hive/tags/release-0.5.0/conf/hive-default.xmlhttps://kidokim509.wordpress.com..
더블릿, 자리배정 알고리즘 문제 순서대로 이동하면서 값을 매겨서 자리를 확인한다.
aws s3 커맨드에는 자체적으로 용량을 확인하는 커맨드가 없기 때문에 ls 명령을 이용하여 내부 객체의 목록을 확인하고 객체의 용량을 더해서 용량을 구해야 한다. aws s3 ls --recursive | grep -v -E "(Bucket: |Prefix: |LastWriteTime|^$|--)" | awk 'BEGIN {total=0}{total+=$3}END{print total}' 1. 버켓의 객체 목록을 가져와서 aws s3 ls --recursive2. 객체 목록 이외의 다른 출력은 제거하고 grep -v -E "(Bucket: |Prefix: |LastWriteTime|^$|--)"3. 3번째 파일사이즈를 모두 더한다. awk 'BEGIN {total=0}{total+=$3}END{prin..
서버를 관리할 필요 없이 특정 이벤트에 반응하는 함수(주로 파이썬으로 구현)를 등록하고, 해당 이벤트가 발생하면 함수가 실행되는 구조이다. 서버 관리에 대한 리스크가 사라진 구조라고 할 수 있다. (누군가는 서버를 관리해야 하겠지만, 서비스 운영 담당자가 관리하는 것은 아님)Function as a Service 와 동일한 개념AWS Lambda 서비스가 서버리스 구조를 지원 - 중앙 집중형 애플리케이션 구조- 애플리케이션 재배포시 서비스 중단 발생- 장애 발생시 서비스 중단 시간이 상대적으로 길다. - 디스크/네트워크/메모리 등 시스템 자원에 대한 직접적인 운영이 필요 이러한 문제점이 발생할 수 있기 때문에 서버리스 구조를 이용한다. - 비용절감: Event Running- 서비스 지향: 마이크로 서비..
줄세우기 알고리즘 해결방법은 다음과 같다. 줄을 세울때 맨 앞과 맨뒤로만 보낼수 있기 때문에, 순서대로 읽어 가면서 정렬이 되어 있는 상태의 숫자는 옮기지 않아도 된다. 정렬이 되어 있지 않은 데이터중 1은 맨앞으로 옮기고, 나머지는 순서대로 맨뒤로 옮기면 자동으로 정렬이 되게 된다. 5, 2, 4, 1, 3의 경우 2, 3은 순서대로 정렬이 되기 때문에 이를 제외한 나머지 값을 옮기게 되므로 5-2 = 3으로 3번 움직여야 한다. 5, 2, 3, 4, 7, 1, 6의 경우 2, 3, 4는 순서대로 정렬 되기 때문에 이를 제외한 나머지 값을 옮기게 되므로 7-3 = 4로 4번 움직여야 한다. 이를 처리하는 코드는 다음과 같다.
아래의 예제는 '프로그래밍 대회에서 배우는 알고리즘 문제 해결 전략' 이라는 책의 미리보기에서 확인할 수 있는 내용이다. 이를 통해 효율적인 알고리즘을 구성하면 수행시간이 얼마나 짧아 질 수 있는 가를 확인할 수 있다. { -7, 4, -3, 6, 3, -8, 3, 4 } 에서 최대의 합을 갖는 구간을 찾아서, 최대의 합을 출력하는 문제이다. 책의 예제를 Java 로 수정하면 아래와 같다. 알고리즘 구성에 따라 for 문을 한번만 사용하고서 답을 찾을 수도 있다. 이렇게 효율적인 알고리즘을 구성하는 것은 무엇보다 중요하다. package algorithm; public class EfficientMaxSum { static int[] array = { -7, 4, -3, 6, 3, -8, 3, 4 }; ..
정보 올림피아드 문제 해결을 위한 공부를 위해서 여러 자료를 찾던 중 발견한 한국정보화 진흥원의 자료이다. 아래의 링크에 들어가면 초급, 중급, 고급 문제해결을 위한 기본자료들이 있다. 문제에 대한 접근을 어떻게 해야 할지 알 있을 것 같다. - 문제 해결을 위한 창의적 알고리즘 초급- 문제 해결을 위한 창의적 알고리즘 중급- 문제 해결을 위한 창의적 알고리즘 상급 https://www.digitalculture.or.kr/koi/StudyBook.do
AWS 커맨드에서 신임장은 S3버켓의 위치region)과 키 설정, 파일 포맷 설정에 사용된다.매번 커맨드시에 입력하는 것이 번거롭기 때문에 신임장 파일에 저장해 놓고 사용하면된다. - AWS 커맨드를 이용해서 설정하는 것도 가능하고, 파일을 생성해서 사용하는 것도 가능하다. AWS 커맨드에서 사용하는 신임장(credential) 설정방법은 다음과 같다. $ aws configure AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-west-2 Default output format [Non..
HDFS에 파일 업로드시에 권한문제가 발생하여 파일 업로드가 안 될 경우가 있다. Permission denied: user=alice, access=WRITE, inode="staging":hduser:supergroup:rwxr-xr-x 보통 하둡에 설정된 사용자명과 현재 사용자 명이 달라서 발생하는 오류이다. 이럴때는 아래와 같이 하둡 사용자 명을 설정하여 해결한다. System.setProperty("HADOOP_USER_NAME", "hduser") export HADOOP_USER_NAME= http://stackoverflow.com/questions/11041253/set-hadoop-system-user-for-client-embedded-in-java-webapphttp://stacko..
패리티 비트는 정보의 전달 과정에서 오류가 생겼는지 확인하기 위해 추가하는 비트이다. 8bit 데이터 구조에서 7bit는 전달하는 데이터(ascii는 7bit로 모두 표현가능)를 표현하고, 마지막 1bit로 데이터에 오류가 있는지 확인하는 것이다. 최종적으로 덧붙이는 비트에 따라, 짝수 패리티, 홀수 패리티로 구분된다. * 패리티는 오류의 발생여부를 알 수 있지만 수정할 수는 없다. https://ko.wikipedia.org/wiki/%ED%8C%A8%EB%A6%AC%ED%8B%B0_%EB%B9%84%ED%8A%B8
순열은 순서가 부여된 임의의 집합을 다른 순서로 뒤섞는 연산을 말한다. 1, 2, 3 이라는 숫자의 집합이 있을 때, 다음과 같이 뒤섞는 연산이다. 1,2,3 1,3,2 2,1,3 2,3,1 3,2,1 3,1,2 자바에서는 재귀연산을 이용해 해결할 수 있다. 기준점(pivot)이 되는 배열의 인덱스를 제공하면, 해당 인덱스의 뒤쪽에 있는 값들과 위치를 변경후 기준점을 다음의 위치로 옮겨 다시 호출하는 순서로 진행한다. 아래와 같이 배열을 이용하는 방법과 문자열을 이용하는 방법이 있다. * 순열은 문자열의 길이이 따라 n! 로 시간이 걸리게 된다. 문자열의 길이가 20, 30 개가 된다면 시간이 굉장히 오래 걸리게 된다. http://gorakgarak.tistory.com/522 http://stacko..
자료구조에서 큐는 FIFO(First In First Out) 구조의 자료이다. 처음 들어간 데이터를 출력한다. 구현방식에 따라 다양한 종류가 존재한다. 자바의 util 에는 기본적으로 큐를 제공하기 때문에 해당 부분을 이용하면 된다. ArrayDeque 를 이용하면 되는데 주의할 점이 하나 있다. * 데이터를 입력하는 방법에 offer(), push() 두가지 메소드가 있는데 push는 데이터를 앞으로 입력하고, offer는 데이터를 뒤로 입력한다. push 만을 이용하여 데이터를 입력하면 스택처럼 동작하고, offer 만을 이용하여 데이터를 입력하면 큐로 동작한다. 따라서 데이터를 입력할 때 메소드를 잘 선택하여 입력해야 한다. import java.util.ArrayDeque; public clas..
- Total
- Today
- Yesterday
- oozie
- 파이썬
- Linux
- AWS
- 백준
- java
- build
- S3
- Tez
- nodejs
- bash
- 오류
- 하이브
- mysql
- HIVE
- 하둡
- Python
- SQL
- 알고리즘
- hbase
- 정올
- error
- HDFS
- emr
- airflow
- Hadoop
- yarn
- ubuntu
- 다이나믹
- SPARK
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |