살다 보면 꼭 한번은 재수가 좋든지 나쁘든지 천재를 만나게 된다. 대다수 우리들은 이 천재와 경쟁하다가 상처투성이가 되든지, 아니면 자신의 길을 포기하게 된다. 그리고 평생 주눅 들어 살든지, 아니면 자신의 취미나 재능과는 상관없는 직업을 가지고 평생 못 가본 길에 대해서 동경하며 산다. 이처럼 자신의 분야에서 추월할 수 없는 천재를 만난다는 것은 끔찍하고 잔인한 일이다. 어릴 때 동네에서 그림에 대한 신동이 되고, 학교에서 만화에 대한 재능을 인정받아 만화계에 입문해서 동료들을 만났을 때, 내 재능은 도토리 키 재기라는 것을 알았다. 그 중에 한두 명의 천재를 만났다. 나는 불면증에 시달릴 정도로 매일매일 날밤을 새우다시피 그림을 그리며 살았다. 내 작업실은 이층 다락방이었고 매일 두부장수 아저씨의 종..
Order by- 전체 데이터를 정렬- 하나의 리듀서로 진행- 용량이 커지면 문제가 발생할 가능성이 높음- 용량이 많을 경우 limit 를 이용하여 데이터를 제한해야 함 sort by- 리듀서별로 데이터를 정렬- 즉, 파일별로 정렬되어 생성됨- 보통 distribute by 와 함께 사용하여 처리, - distribute by는 리듀서로 보내는 데이터의 분류 기준 cluster by- distributed by, sort by를 동시에 사용한 것 Hive 입문 발표 자료 from beom kyun choi http://saurzcode.in/2015/01/hive-sort-vs-order-vs-distribute-vs-cluster/ https://cwiki.apache.org/confluence/dis..
2017-02-06 02:11:55,396 ERROR [Thread-117] org.apache.hadoop.yarn.YarnUncaughtExceptionHandler: Thread Thread[Thread-117,5,main] threw an Exception.java.lang.RuntimeException: org.apache.tez.dag.api.TezUncheckedException: Invalid configuration of tez jars, tez.lib.uris is not defined in the configurationat org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:604)at org.apache.h..
하이브에서 다이나믹 파티션으로 데이터를 생성할 때 다이나믹 파티션에 입력되는 이름이 null 이거나 공백이면 하이브에서 지정된(hive.exec.default.partition.name) 이름을 이용하여 파티션을 생성한다. hive-default.xml 에 설정된 기본 이름이 __HIVE_DEFAULT_PARTITION__이다. 아래와 같은 코드에서 country_code 칼럼에 공백이나 null 값이 있으면 기본으로 설정된 이름의 파티션이 생성된다. insert into table partition_sample partition (country_code)select country, country_code from world_name; show partitions partition_sample ;...c..
우지를 이용하여 하둡, 하이브 액션을 처리할때 HDFS나 S3에 작업이 처리 되었음을 알리기 위하여 0byte의 파일을 생성해야 할 때가 있다. 이럴때 hadoop의 touchz 명령을 이용하면 0byte의 파일을 생성할 수 있다. * 이는 리눅스의 touch 명령과 동일하다. 우지 워크플로우의 fs 액션은 이작업을 기본적으로 제공하기 때문에 따로 쉘커맨드나 파이썬 액션을 만들지 않아도 처리가 가능하다. fs 액션은 다음의 기본 명령을 제공한다. - move , delete , mkdir , chmod , touchz, chgrp [fs 액션 문법] ... ... ... ... ... ... ... [예제1] ... ... [예제2] Map/Reduce failed, error message[${wf:e..
TRANSFORM() 명령은 하이브에 입력되는 원천로그를 변형해야 할 때 사용하면 된다. 만약 입력되는 로그가 아래와 같은 형식으로 입력된다고 한다면 일반적인 MR로는 처리가 블가능하다. 이때 TRANSFORM() 을 이용하여 출력형식을 아래와 같이 변경하는 것이 가능하다. DATA1Column1-1Column1-2DATA2Column2-1Column2-2 DATA1Column1-1Column1-2DATA2Column2-1Column2-2 #!/usr/bin/python# -*- coding: utf-8 -*-import re, json, sys, time def readFile(): with sys.stdin as lines: #with open("./TEST_DATA.txt") as lines: # ..
'unicodeescape' codec can't decode bytes in position 2-3: truncated \U 파이썬에서 파일을 읽기 위하여 파일의 경로를 지정하는 도중에 경로상에 \u, \U 가 있으면 위와 같은 오류가 발생한다. 파이썬은 특수 문자를 \ 로 시작하여 인식하기 때문에 위와 같은 오류가 발생한다. 특수 문자 목록은 다음과 같다. * \u, \U는 유니코드를 나타내는 특수 문자이다. Escape SequenceMeaningNotes\newlineIgnored \\Backslash (\) \'Single quote (') \"Double quote (") \aASCII Bell (BEL) \bASCII Backspace (BS) \fASCII Formfeed (FF) \nAS..
DB에 저장된 datetime 객체사이의 시간차를 계산하기 위해서는 TIMESTAMPDIFF() 함수를 이용하여 계산 할 수 있다. 함수의 사용방법은 다음과 같다. * unit에는 SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, or YEAR 를 입력할 수 있다. mysql> select TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2) > from tbl; select id ,TIMESTAMPDIFF(SECOND, created_time, end_time) as a1 ,TIMESTAMPDIFF(MINUTE, created_time, end_time) as a2 ,TIMESTAMPDIFF(HOUR, created_time,..
하이브의 테이블을 EXTERNAL로 설정하면 다른 위치에 있는 파일을테이블의 메타 정보로 읽을 수 있다. 파티션의 위치를 지정하여 파일을 읽는 경우에도 테이블의 메타 정보로 읽을 수 있다. 이런경우 테이블명과 파티션의 이름으로 파일의 물리적인 위치를 확인하기가 힘들다. 이럴때는 desc 명령어를 이용하여 파티션의 위치를 확인할 수 있다. hive> show tables;OKsample_table hive> desc sample_table;일반 정보 확인 hive> desc extended sample_table;확장된 테이블 정보 확인 hive> show partitions sample_table;테이블의 파티션 정보 확인 hive> desc sample_table partition(date_val='2..
정보 올림피아드나 알고리즘 공부를 위해서 보면 좋을 교육 자료 모음 문제해결을 위한 창의적 알고리즘 KOI 교육교재(초급)문제해결을 위한 창의적 알고리즘 KOI 교육교재(중급)문제해결을 위한 창의적 알고리즘 KOI 교육교재(고급) 바로가기 -> https://www.digitalculture.or.kr/koi/StudyOnline.do# 소프트웨어 중심사회(http://www.software.kr/um/main.do)- 소프트웨어 관련 진로 정보- 각종 정부 시책 정보- 알고리즘 교육 정보 제가 주로 사용하는 사이트는 백준과 정올이다. 백준은 문제를 풀다가 질문에서 문제 풀이에 대한 힌트를 얻을 수 있다.정올은 틀리면 해당 테스트 케이스를 알려주기 때문에 도움이 된다. 백준, 정올에 동일한 문제가 있기 ..
쉘 스크립트에서 mysql 쿼리를 실행하는 방법은 두가지 방법이 있다. 첫번째는 -e 옵션을 이용하여 처리하는 방법이 있다. mysql -e "select * from TABLE;"mysql -Bse "select * from TABLE;" [user ~]$ mysql -e "select * from TABLE;"+--------+----------------+-----------------------------+| VER_ID | VERSION | COMMENT |+--------+----------------+-----------------------------+| 1 | 0.1.0 | TEST |+--------+----------------+-----------------------------+ ..
하이브의 맵리듀스 처리중 속도가 너무 느리다면 매퍼의 개수를 늘려서 처리를 해볼 수 있다. 이럴때 매퍼의 개수를 늘이기 위한 설정은 다음과 같다. * MR 엔진일때와 Tez 엔진일때 다른 설정을 이용한다. SET hive.exec.reducers.bytes.per.reducer=67108864;SET mapreduce.input.fileinputformat.split.minsize.per.node=134217728;SET mapreduce.input.fileinputformat.split.minsize.per.rack=134217728;SET mapreduce.input.fileinputformat.split.minsize=67108864;SET mapreduce.input.fileinputformat...
하이브 처리중 다음과 같은 오류가 발생하는 경우는 scratchdir 를 설정해 주면된다. 아래의 오류는 getScratchDir() 메소드를 호출하다가 오류가 발생한것을 알 수 있다. 따라서 아래의 설정을 해주면 된다. hive.exec.scratchdir/tmp/hivehive.exec.local.scratchdir/tmp/hive 위의 설정은 하이브 처리중 사용하는 플랜 파일이나, 임시 파일들을 저장하기 위하여 사용한다. 2017-01-13 07:33:08,521 INFO [hive-job uber-SubtaskRunner] org.apache.hadoop.hive.ql.exec.SerializationUtilities: Serializing MapredWork using kryo2017-01-13..
우지는 RUNNING 중인 코디네이터의 정보를 수정하는 방법으로 다음의 옵션이 존재한다. -update: 코디네이터의 프로퍼티, 선언(코디네이터, 워크플로우 정보)을 변경 : name, frequency, start time, end time and timezone 변경 불가 : ex) oozie job -oozie http://주소 -config ./sample.properties -update oozie-C -change: endtime/concurrency/pausetime/status 를 변경 : oozie job --oozie http://주소 -change oozie-C -value endtime=2017-01-20T01:00Z xml 파일의 정보를 변경하기 위해서는 update를 이용하고,개..
java.lang.NoClassDefFoundError: org/codehaus/plexus/util/xml/XmlStreamWriter 메이븐의 shade 플러그인에서 XmlStreamWriter 클래스를 찾지 못하는 오류가 발생하면 메이븐을 최신화 해서 처리하든가, shade 플러그인의 버전을 최신화 해보면 된다. 현재 기준에서 최신은 2.4이므로 2.4로 수정하면 된다. 2.4 shade - http://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html
jar 파일을 분석할 수 있는 디컴파일러 는이클립스, IntelliJ 플러그인을 제공하고, 단독으로 실행가능한 툴을 제공하는 JD 가 가장 대표적이다. 단독 실행가능한 툴은 클래스, 메소드 검색이 가능하고, 드래그 앤 드랍으로 분석이 가능하기 때문에 간편하게 사용이 가능하다. 단, 모든 내용을 메모리에 올려놓고 사용하는지 약간 무겁다. 모든 내용을 자주 분석해야 하는 경우에는 분석 결과를 파일로 만들어 놓고 사용하는 것이 좋을 것이고, 아니면 JD를 이용하면 될 것 같다. JD - http://jd.benow.ca/온라인 디컴파일러 - http://www.javadecompilers.com/
SemanticException Column "칼럼명" Found in more than One Tables/Subqueries 하이브에서 다음과 같은 오류가 발생하는 원인은 조인 테이블이나 서브쿼리의 테이블에 동일한 이름의 칼럼이 있기 때문이다. 이럴때는 테이블의 얼라이어스를 이용하여 어느 테이블의 칼럼인지 명확하게 제시해 주어야 한다. SELECT a.column1, b.column1 FROM aTable a LEFT OUTER JOIN bTable b ON a.column1 = b.column1;
Hive 2.x 버전에서 hpl이 사용가능하다. hql은 Hybrid Procedural SQL 로서 오라클의 프로시저와 동일하다. SQL을 이용하여 IF, FOR 문 등의 절차형 처리를 가능하게 해준다. 여기(http://www.hplsql.org/home)에서 확인이 가능한데, 주의 할 점은 다른 DB의 프로시저에 구현되어 있는 구문들이 모두 구현되어 있지는 않다. 여기(http://www.hplsql.org/doc)에서 각 명령어가 구현되어 있는지 확인해서 처리하면 된다. hive 2.x 에서는 hqlsql이 사용가능하고, 간단하게 다음과 같이 테스트가 가능하다. 다음과 같이 hpl 파일을 저장한다. -- 10까지의 문자 출력 FOR i IN 1..10 LOOP DBMS_OUTPUT.PUT_LINE..
ORC(Optimized Row Columnar) 파일 포맷 ORC 파일 포맷은 하이브의 처리 속도를 높이기 위하여 개발 되었다. 하이브가 처음에 사용한 TextFile, SequenceFile 포맷의 처리속도를 높이기 위하여 RCFile 포맷이 개발 되었다. RCFile 포맷은 각 컬럼을 하나의 파일 묶음으로 만들었기 때문에 각 노드에 분산 처리된 데이터를 모으는 비용이 많이 들어가게 된다. 이를 극복하기 위하여 제안된 것이 ORC 파일 포맷이다. ORC 포맷은 칼럼 단위로 데이터를 기록하고, 인덱스를 기록하여 컬럼에 바로 접근할 수 있기 때문에 속도가 빨라진다. ORC 포맷은 호튼웍스의 부사장 오웬오말리가 제안한 것으로 하나의 파일에 칼럼을 json 처럼 중첩구조로 구성할 수 있고, 리스트, 맵과 같..
리눅스 서버의 시간을 동기화 할 때는 rdate 커맨드를 이용한다. * 영구한 시간 동기화는 ntp 를 이용한다. ** ntpd 를 이용하여 시간 동기화*** ntpq -p 명령을 이용하여 현재 서버의 동기화 상황을 확인 가능 rdate -p time.bora.net: 원격서버(ntp 서버)의 시간을 출력 rdate -s time.bora.net: 원격서버의 시간을 이용하여, 현재 서버의 시간을 설정 rdate 커맨드 설명 - http://www.tutorialspoint.com/unix_commands/rdate.htmntpq 출력내용의 의미 - http://krids.tistory.com/83
- Total
- Today
- Yesterday
- 하이브
- mysql
- airflow
- 파이썬
- SPARK
- nodejs
- 알고리즘
- ubuntu
- yarn
- Hadoop
- build
- hbase
- 백준
- 정올
- bash
- AWS
- Python
- S3
- Linux
- emr
- oozie
- 하둡
- HDFS
- Tez
- HIVE
- 오류
- SQL
- 다이나믹
- error
- java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |