Mixed update/insert is not supported against the target database yet 스쿱을 이용하여 exprot 명령을 처리할 때 위와 같은 오류가 발생하는 경우가 있다. --update-mode 를 allowinsert 로 설정하였을 때 발생한다. --update-key 에 지정한 칼럼이 동일한 데이터가 없어서 insert 를 하려고 할때 데이터베이스가 update insert 문을 지원하지 않아서 발생하는 오류이다. 스쿱 지라에서도 확인할 수 있다. (확인) 현재 1.4.2 버전 기준으로 오라클에서만 지원한다고 한다. 다른 DB 에서는 처리가 안되는 것 같다. PostgreSQL에서는 프로시저를 이용하여 처리할 수도 있다고 한다. >sqoop export --c..
sqoop 을 이용하여 import, export 처리중 다음과 같은 오류가 발생하는 경우가 있다. 3376 [uber-SubtaskRunner] ERROR org.apache.sqoop.manager.SqlManager - Error reading from database: java.sql.SQLException: Streaming result set com.mysql.jdbc.RowDataDynamic@6b80c0fb is still active. No statements may be issued when any streaming result sets are open and in use on a given connection. Ensure that you have called .close() on a..
리눅스의 파일은 파일명으로 실제 파일을 구분할 수 없기 때문에 압축파일의 형식을 파일명으로 단정할 수 가 없다. 파일명과 압축형식이 다를경우 압축형식을 확인하기 위해서는 file 명령어를 이용하면 된다. 아래와 같이 파일명과 정보를 확인할 수 있다. > file gzip-file.gzgzip-file.gz: gzip compressed data, was "gzip-file", last modified: Tue Feb 21 05:41:25 2017, from Unix > file tar-file.tartar-file.tar: POSIX tar archive (GNU) > file tar-gz-file.tar.gztar-gz-file.tar.gz: gzip compressed data, last modifi..
파이썬에서 문자열을 효율적으로 concat 하는 방법을 찾아보다가 좋은 사이트를 발견해서 스크랩 해본다. 원문에서 방법 4, 5, 6을 추천하고 있다. 방법 6이 가장 빠르기 때문에 많이 사용하고,방법 4는 처리시 문자열을 변환하려고 할 때 유연하게 적용이 가능하다. 방법 5는 가상 파일을 이용하기 때문에 메모리 사용량에 있어서 가장 효율적이다. 방법 4, 6 의 경우 리스트릴 이용하기 때문에 문자열이 많아지면 메모리 사용량이 늘어날 수 있다. https://waymoot.org/home/python_string/http://blog.leekchan.com/post/19062594439/python%EC%97%90%EC%84%9C-%ED%9A%A8%EC%9C%A8%EC%A0%81%EC%9D%B8-stri..
파이썬에서 숫자로 일정구간을 반복하기 위해서, range()와 xrange() 함수를 제공한다. 동작에는 차이가 없지만, 세부적으로 range()는 리스트 객체를 반환하고, xrange()는 xrange 객체를 반환한다. range()는 리스트 객체를 생성하여 반환하기 때문에 숫자가 커질수록 메모리 사용량이 많다.xrange()가 반환하는 xrange 타입은 제네레이터이다. 따라서 필요할 때 숫자를 생성하기 때문에 메모리 사용량은 일정하다. * 모바일 환경이나 메모리가 제한적인 상황에서는 xrange()를 사용하고, 만약 배열을 여러번 순환해야 한다면 range()를 사용하는 것이 더 좋을 것이다. 사용방법은 다음과 같다. #!/bin/python# -*- coding:utf-8 -*- def range..
하이브 테이블에 데이터를 입력하기 위해서는 몇가지 방법이 존재한다. - 테이블 생성시에 LOCATION 을 지정하는 방법CREATE TABLE employee ( id String, name String ) LOCATION 'hdfs://127.0.0.1/user/data/'; - LOAD DATA INPATH 를 이용하여 HDFS 의 파일을 입력하는 방법LOAD DATA INPATH 'hdfs://127.0.0.1/user/data/sample.csv' INTO TABLE tbl;;LOAD DATA INPATH '/user/data/sample.csv' INTO TABLE tbl;; - LOAD DATA LOCAL INPATH 를 이용하여 로컬의 데이터를 입력하는 방법LOAD DATA LOCAL INP..
-- 테이블 생성CREATE TABLE employee ( id String, name String, lists ARRAY, maps MAP) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' -- 칼럼을 구분하는 기준 ESCAPED BY '\\' -- 값을 입력하지 않음 COLLECTION ITEMS TERMINATED BY ',' -- 리스트를 구분하는 기준 MAP KEYS TERMINATED BY '=' -- 맵데이터의 키와 밸류를 구분하는 기준 LINES TERMINATED BY '\n' -- 로(row)를 구분하는 기준 NULL DEFINED AS 'null' -- null 값을 표현(0.13 버전에서 추가) ; -- 생성한 테이블에 데이터 입력(hdfs 상의 ..
살다 보면 꼭 한번은 재수가 좋든지 나쁘든지 천재를 만나게 된다. 대다수 우리들은 이 천재와 경쟁하다가 상처투성이가 되든지, 아니면 자신의 길을 포기하게 된다. 그리고 평생 주눅 들어 살든지, 아니면 자신의 취미나 재능과는 상관없는 직업을 가지고 평생 못 가본 길에 대해서 동경하며 산다. 이처럼 자신의 분야에서 추월할 수 없는 천재를 만난다는 것은 끔찍하고 잔인한 일이다. 어릴 때 동네에서 그림에 대한 신동이 되고, 학교에서 만화에 대한 재능을 인정받아 만화계에 입문해서 동료들을 만났을 때, 내 재능은 도토리 키 재기라는 것을 알았다. 그 중에 한두 명의 천재를 만났다. 나는 불면증에 시달릴 정도로 매일매일 날밤을 새우다시피 그림을 그리며 살았다. 내 작업실은 이층 다락방이었고 매일 두부장수 아저씨의 종..
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..
- Total
- Today
- Yesterday
- Linux
- 하둡
- hbase
- yarn
- bash
- SPARK
- Tez
- S3
- oozie
- Python
- SQL
- 하이브
- emr
- 정올
- airflow
- build
- 백준
- ubuntu
- mysql
- nodejs
- 오류
- HIVE
- error
- java
- Hadoop
- 파이썬
- HDFS
- AWS
- 다이나믹
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |