Query Routing을 통한 On-Demand Mart 구성
올해 초 부서가 바뀌어서 HADOOP Eco-System을 이용한 DataFlow를 관장하는 플랫폼을 개발하는 업무에서, 이렇게 만들어진 데이터를 이용한 시스템/서비스를 개발하는 업무를 담당하게 되었습니다. 업종이 바뀐 기념으로? 이곳에서 제가 설계하고 개발한 여러 시스템 중 한가지를 간단히 소개시켜 드릴까 합니다. 서비스의 개요는 사내에서 활용하고 있는 (집계 및 모델링으로 나온)각종지표에 대한 자료를 모집군에 따라 비교해주는 기능을 제공하는 것 입니다. 어렵게 말씀 드린 것 같은데 예를 들어 다시 정리하면 "SKT 전체 사용자가 가장 많이 사용하는 APP과 서울이 직장인 20대 여성 중 아이폰 사용자가 가장 많이 쓰는 APP을 비교해줘!" .......
2017-07-13 13:23:51 |
산소소년
Query Routing을 통한 On-Demand Mart 구성
올해 초 부서가 바뀌어서 HADOOP Eco-System을 이용한 DataFlow를 관장하는 플랫폼을 개발하는 업무에서, 이렇게 만들어진 데이터를 이용한 시스템/서비스를 개발하는 업무를 담당하게 되었습니다. 업종이 바뀐 기념으로? 이곳에서 제가 설계하고 개발한 여러 시스템 중 한가지를 간단히 소개시켜 드릴까 합니다. 서비스의 개요는 사내에서 활용하고 있는 (집계 및 모델링으로 나온)각종지표에 대한 자료를 모집군에 따라 비교해주는 기능을 제공하는 것 입니다. 어렵게 말씀 드린 것 같은데 예를 들어 다시 정리하면 "SKT 전체 사용자가 가장 많이 사용하는 APP과 서울이 직장인 20대 여성 중 아이폰 사용자가 가장 많이 쓰는 APP을 비교해줘!" .......
2017-07-13 13:23:51 |
산소소년
Query Routing을 통한 On-Demand Mart 구성
올해 초 부서가 바뀌어서 HADOOP Eco-System을 이용한 DataFlow를 관장하는 플랫폼을 개발하는 업무에서, 이렇게 만들어진 데이터를 이용한 시스템/서비스를 개발하는 업무를 담당하게 되었습니다. 업종이 바뀐 기념으로? 이곳에서 제가 설계하고 개발한 여러 시스템 중 한가지를 간단히 소개시켜 드릴까 합니다. 서비스의 개요는 사내에서 활용하고 있는 (집계 및 모델링으로 나온)각종지표에 대한 자료를 모집군에 따라 비교해주는 기능을 제공하는 것 입니다. 어렵게 말씀 드린 것 같은데 예를 들어 다시 정리하면 "SKT 전체 사용자가 가장 많이 사용하는 APP과 서울이 직장인 20대 여성 중 아이폰 사용자가 가장 많이 쓰는 APP을 비교해줘!" .......
2017-07-13 04:23:51 |
산소소년
Query Routing을 통한 On-Demand Mart 구성
올해 초 부서가 바뀌어서 HADOOP Eco-System을 이용한 DataFlow를 관장하는 플랫폼을 개발하는 업무에서, 이렇게 만들어진 데이터를 이용한 시스템/서비스를 개발하는 업무를 담당하게 되었습니다. 업종이 바뀐 기념으로? 이곳에서 제가 설계하고 개발한 여러 시스템 중 한가지를 간단히 소개시켜 드릴까 합니다. 서비스의 개요는 사내에서 활용하고 있는 (집계 및 모델링으로 나온)각종지표에 대한 자료를 모집군에 따라 비교해주는 기능을 제공하는 것 입니다. 어렵게 말씀 드린 것 같은데 예를 들어 다시 정리하면 "SKT 전체 사용자가 가장 많이 사용하는 APP과 서울이 직장인 20대 여성 중 아이폰 사용자가 가장 많이 쓰는 APP을 비교해줘!" .......
2017-07-13 04:23:51 |
산소소년
ORC파일에서 스키마 추출하기
다른 부서로부터 데이터를 전달받았는데 이게 ORC포멧으로 되어있는 경우가 종종 발생하고 있습니다. 데이터 포멧도 함께 전달받으면 문제가 없으나 전달받지 못했거나, 포멧이 현행화가 되어 있지 않다면 쿼리 구동 시 자료형 컨버팅을 할 수 없다는 식의 에러가 발생하게 됩니다. ORC파일에 대한 자세한 정보는 http://orc.apache.org/docs/ 에서 확인 가능합니다. 또, Map/Reduce 상에서 orc를 읽어서 처리하는 방법은 http://airguy76.blog.me/220886477955 에서 정리한 적이 있습니다. 이러한 방법을 이용하여 이번엔 스키마를 읽어들여 출력하는 간단한 툴을 만들어 보겠습니다. HDFS상의 파일을 접근하기 위해선 configuration 생성, 생성.......
2016-12-27 13:32:31 |
산소소년
ORC파일에서 스키마 추출하기
다른 부서로부터 데이터를 전달받았는데 이게 ORC포멧으로 되어있는 경우가 종종 발생하고 있습니다. 데이터 포멧도 함께 전달받으면 문제가 없으나 전달받지 못했거나, 포멧이 현행화가 되어 있지 않다면 쿼리 구동 시 자료형 컨버팅을 할 수 없다는 식의 에러가 발생하게 됩니다. ORC파일에 대한 자세한 정보는 http://orc.apache.org/docs/ 에서 확인 가능합니다. 또, Map/Reduce 상에서 orc를 읽어서 처리하는 방법은 http://airguy76.blog.me/220886477955 에서 정리한 적이 있습니다. 이러한 방법을 이용하여 이번엔 스키마를 읽어들여 출력하는 간단한 툴을 만들어 보겠습니다. HDFS상의 파일을 접근하기 위해선 configuration 생성, 생성.......
2016-12-27 13:32:31 |
산소소년
ORC파일에서 스키마 추출하기
다른 부서로부터 데이터를 전달받았는데 이게 ORC포멧으로 되어있는 경우가 종종 발생하고 있습니다. 데이터 포멧도 함께 전달받으면 문제가 없으나 전달받지 못했거나, 포멧이 현행화가 되어 있지 않다면 쿼리 구동 시 자료형 컨버팅을 할 수 없다는 식의 에러가 발생하게 됩니다. ORC파일에 대한 자세한 정보는 http://orc.apache.org/docs/ 에서 확인 가능합니다. 또, Map/Reduce 상에서 orc를 읽어서 처리하는 방법은 http://airguy76.blog.me/220886477955 에서 정리한 적이 있습니다. 이러한 방법을 이용하여 이번엔 스키마를 읽어들여 출력하는 간단한 툴을 만들어 보겠습니다. HDFS상의 파일을 접근하기 위해선 configuration 생성, 생성.......
2016-12-27 04:32:31 |
산소소년
ORC파일에서 스키마 추출하기
다른 부서로부터 데이터를 전달받았는데 이게 ORC포멧으로 되어있는 경우가 종종 발생하고 있습니다. 데이터 포멧도 함께 전달받으면 문제가 없으나 전달받지 못했거나, 포멧이 현행화가 되어 있지 않다면 쿼리 구동 시 자료형 컨버팅을 할 수 없다는 식의 에러가 발생하게 됩니다. ORC파일에 대한 자세한 정보는 http://orc.apache.org/docs/ 에서 확인 가능합니다. 또, Map/Reduce 상에서 orc를 읽어서 처리하는 방법은 http://airguy76.blog.me/220886477955 에서 정리한 적이 있습니다. 이러한 방법을 이용하여 이번엔 스키마를 읽어들여 출력하는 간단한 툴을 만들어 보겠습니다. HDFS상의 파일을 접근하기 위해선 configuration 생성, 생성.......
2016-12-27 04:32:31 |
산소소년
ORC파일을 mapreduce에서 읽어보자!
hive에서 생성한 orc데이터를 MapReduce에서 읽거야 하거나 혹은 별도의 시스템에서 읽어서 처리해야하는 경우가 종종 있습니다. 대게 이런 경우 별도로 hive내에서 plain text로 변환한 후 이후의 과정을 처리를 하게됩니다. 하지만 요즘 시대가 그런 것인지 제가 담당하는 일만 그런 것인지 모르겠지만, 요런 일들을 할 때는 꼬옥~ 수십, 수백기가를 넘어 테라단위의 데이터가 생성되고 있고 이것을 변환하여 전송하는 것도 곤욕입니다. 그래서 HDFS에 있는 ORC파일을 HDFS API를 이용하여 직접 열어 읽을 수 있는 리더를 생성하는 방법과 이를 통해 Map/Reduce에서 사용할 수 있는 RecordReader 및 InputFormat을 만들어 보겠습니다. 우선 hiv.......
2016-12-15 10:37:13 |
산소소년
ORC파일을 mapreduce에서 읽어보자!
hive에서 생성한 orc데이터를 MapReduce에서 읽거야 하거나 혹은 별도의 시스템에서 읽어서 처리해야하는 경우가 종종 있습니다. 대게 이런 경우 별도로 hive내에서 plain text로 변환한 후 이후의 과정을 처리를 하게됩니다. 하지만 요즘 시대가 그런 것인지 제가 담당하는 일만 그런 것인지 모르겠지만, 요런 일들을 할 때는 꼬옥~ 수십, 수백기가를 넘어 테라단위의 데이터가 생성되고 있고 이것을 변환하여 전송하는 것도 곤욕입니다. 그래서 HDFS에 있는 ORC파일을 HDFS API를 이용하여 직접 열어 읽을 수 있는 리더를 생성하는 방법과 이를 통해 Map/Reduce에서 사용할 수 있는 RecordReader 및 InputFormat을 만들어 보겠습니다. 우선 hiv.......
2016-12-15 10:37:13 |
산소소년
ORC파일을 mapreduce에서 읽어보자!
hive에서 생성한 orc데이터를 MapReduce에서 읽거야 하거나 혹은 별도의 시스템에서 읽어서 처리해야하는 경우가 종종 있습니다. 대게 이런 경우 별도로 hive내에서 plain text로 변환한 후 이후의 과정을 처리를 하게됩니다. 하지만 요즘 시대가 그런 것인지 제가 담당하는 일만 그런 것인지 모르겠지만, 요런 일들을 할 때는 꼬옥~ 수십, 수백기가를 넘어 테라단위의 데이터가 생성되고 있고 이것을 변환하여 전송하는 것도 곤욕입니다. 그래서 HDFS에 있는 ORC파일을 HDFS API를 이용하여 직접 열어 읽을 수 있는 리더를 생성하는 방법과 이를 통해 Map/Reduce에서 사용할 수 있는 RecordReader 및 InputFormat을 만들어 보겠습니다. 우선 hiv.......
2016-12-15 01:37:13 |
산소소년
ORC파일을 mapreduce에서 읽어보자!
hive에서 생성한 orc데이터를 MapReduce에서 읽거야 하거나 혹은 별도의 시스템에서 읽어서 처리해야하는 경우가 종종 있습니다. 대게 이런 경우 별도로 hive내에서 plain text로 변환한 후 이후의 과정을 처리를 하게됩니다. 하지만 요즘 시대가 그런 것인지 제가 담당하는 일만 그런 것인지 모르겠지만, 요런 일들을 할 때는 꼬옥~ 수십, 수백기가를 넘어 테라단위의 데이터가 생성되고 있고 이것을 변환하여 전송하는 것도 곤욕입니다. 그래서 HDFS에 있는 ORC파일을 HDFS API를 이용하여 직접 열어 읽을 수 있는 리더를 생성하는 방법과 이를 통해 Map/Reduce에서 사용할 수 있는 RecordReader 및 InputFormat을 만들어 보겠습니다. 우선 hiv.......
2016-12-15 01:37:13 |
산소소년
MapReduce line number를 이용한 mapping join
HDFS 상에 있는 데이터의 특정 필드를 다른 데이터의 일부분으로 치환할 때 대부분 hive(SQL) join을 이용합니다. 하지만 100개가 넘은 필드 중에 치환해야 하는 필드가 50개 라면? 아오씨~~~~ 1234567select a.f1, b.f1, b.f2, b.f3, ... b.f50, a.f3 ... from table_a a, table_b bwhere a.dt='20160606' and a.svc_id = b.svc_idcs 쿼리를 작성하는데 손이 많이 가는 것도 문제지만 MR로 컨버팅 되는 과정에서 굉장히 많은 stage가 만들어지게 됩니다. 이런 부담을 줄이기 위해서 간단한 MR작업으로 동시에 여러필드를 치환하는 방법을 소개하려 합니다. 2개의 STAGE로 나눠지며 순서는 다음과 같습니다. STAGE1에서는 1. 맵핑테이블과 치환이.......
2016-06-09 18:58:35 |
산소소년
MapReduce line number를 이용한 mapping join
HDFS 상에 있는 데이터의 특정 필드를 다른 데이터의 일부분으로 치환할 때 대부분 hive(SQL) join을 이용합니다. 하지만 100개가 넘은 필드 중에 치환해야 하는 필드가 50개 라면? 아오씨~~~~ 1234567select a.f1, b.f1, b.f2, b.f3, ... b.f50, a.f3 ... from table_a a, table_b bwhere a.dt='20160606' and a.svc_id = b.svc_idcs 쿼리를 작성하는데 손이 많이 가는 것도 문제지만 MR로 컨버팅 되는 과정에서 굉장히 많은 stage가 만들어지게 됩니다. 이런 부담을 줄이기 위해서 간단한 MR작업으로 동시에 여러필드를 치환하는 방법을 소개하려 합니다. 2개의 STAGE로 나눠지며 순서는 다음과 같습니다. STAGE1에서는 1. 맵핑테이블과 치환이.......
2016-06-09 18:58:35 |
산소소년
MapReduce line number를 이용한 mapping join
HDFS 상에 있는 데이터의 특정 필드를 다른 데이터의 일부분으로 치환할 때 대부분 hive(SQL) join을 이용합니다. 하지만 100개가 넘은 필드 중에 치환해야 하는 필드가 50개 라면? 아오씨~~~~ 1234567select a.f1, b.f1, b.f2, b.f3, ... b.f50, a.f3 ... from table_a a, table_b bwhere a.dt='20160606' and a.svc_id = b.svc_idcs 쿼리를 작성하는데 손이 많이 가는 것도 문제지만 MR로 컨버팅 되는 과정에서 굉장히 많은 stage가 만들어지게 됩니다. 이런 부담을 줄이기 위해서 간단한 MR작업으로 동시에 여러필드를 치환하는 방법을 소개하려 합니다. 2개의 STAGE로 나눠지며 순서는 다음과 같습니다. STAGE1에서는 1. 맵핑테이블과 치환이.......
2016-06-09 09:58:35 |
산소소년
MapReduce line number를 이용한 mapping join
HDFS 상에 있는 데이터의 특정 필드를 다른 데이터의 일부분으로 치환할 때 대부분 hive(SQL) join을 이용합니다. 하지만 100개가 넘은 필드 중에 치환해야 하는 필드가 50개 라면? 아오씨~~~~ 1234567select a.f1, b.f1, b.f2, b.f3, ... b.f50, a.f3 ... from table_a a, table_b bwhere a.dt='20160606' and a.svc_id = b.svc_idcs 쿼리를 작성하는데 손이 많이 가는 것도 문제지만 MR로 컨버팅 되는 과정에서 굉장히 많은 stage가 만들어지게 됩니다. 이런 부담을 줄이기 위해서 간단한 MR작업으로 동시에 여러필드를 치환하는 방법을 소개하려 합니다. 2개의 STAGE로 나눠지며 순서는 다음과 같습니다. STAGE1에서는 1. 맵핑테이블과 치환이.......
2016-06-09 09:58:35 |
산소소년
shell script 비교연산자
정수 비교 -eq같음 if [ "$a" -eq "$b" ] -ne같지 않음 if [ "$a" -ne "$b" ] -gt더 큼 if ["$a" -gt "$b" ] -ge더 크거나 같음 if [ "$a" -ge "$b" ] -lt더 작음 if [ "$a" -lt "$b" ] -le더 작거나 같음 if [ "$a" -le "$b" ] <더 작음(이중 소괄호에서) (("$a" < "$b")) <=더 작거나 같음(이중 소괄호에서) (("$a" <= "$b")) >더 큼(이중 소괄호에서) (("$a" > "$b")) >=더 크거나 같음(이중 소괄호에서) (("$a" >= "$b")) 문자열 비교 =같음 if [ "$a" = "$b" ] ==같음 if [ "$a" == "$b" ] = 와 동의어입니다. !=같지 않음 if [ "$a" != "$b" ] 이 연산자는 [[ ... ]] 에서 패턴 매칭을 사용합니다. <아스키 알.......
2016-05-24 09:12:31 |
산소소년
shell script 비교연산자
정수 비교 -eq같음 if [ "$a" -eq "$b" ] -ne같지 않음 if [ "$a" -ne "$b" ] -gt더 큼 if ["$a" -gt "$b" ] -ge더 크거나 같음 if [ "$a" -ge "$b" ] -lt더 작음 if [ "$a" -lt "$b" ] -le더 작거나 같음 if [ "$a" -le "$b" ] =더 크거나 같음(이중 소괄호에서) (("$a" >= "$b")) 문자열 비교 =같음 if [ "$a" = "$b" ] ==같음 if [ "$a" == "$b" ] = 와 동의어입니다. !=같지 않음 if [ "$a" != "$b" ] 이 연산자는 [[ ... ]] 에서 패턴 매칭을 사용합니다.
2016-05-24 09:12:31 |
산소소년
shell script 비교연산자
정수 비교 -eq같음 if [ "$a" -eq "$b" ] -ne같지 않음 if [ "$a" -ne "$b" ] -gt더 큼 if ["$a" -gt "$b" ] -ge더 크거나 같음 if [ "$a" -ge "$b" ] -lt더 작음 if [ "$a" -lt "$b" ] -le더 작거나 같음 if [ "$a" -le "$b" ] <더 작음(이중 소괄호에서) (("$a" < "$b")) <=더 작거나 같음(이중 소괄호에서) (("$a" <= "$b")) >더 큼(이중 소괄호에서) (("$a" > "$b")) >=더 크거나 같음(이중 소괄호에서) (("$a" >= "$b")) 문자열 비교 =같음 if [ "$a" = "$b" ] ==같음 if [ "$a" == "$b" ] = 와 동의어입니다. !=같지 않음 if [ "$a" != "$b" ] 이 연산자는 [[ ... ]] 에서 패턴 매칭을 사용합니다. <아스키 알.......
2016-05-24 00:12:31 |
산소소년
shell script 비교연산자
정수 비교 -eq같음 if [ "$a" -eq "$b" ] -ne같지 않음 if [ "$a" -ne "$b" ] -gt더 큼 if ["$a" -gt "$b" ] -ge더 크거나 같음 if [ "$a" -ge "$b" ] -lt더 작음 if [ "$a" -lt "$b" ] -le더 작거나 같음 if [ "$a" -le "$b" ] <더 작음(이중 소괄호에서) (("$a" < "$b")) <=더 작거나 같음(이중 소괄호에서) (("$a" <= "$b")) >더 큼(이중 소괄호에서) (("$a" > "$b")) >=더 크거나 같음(이중 소괄호에서) (("$a" >= "$b")) 문자열 비교 =같음 if [ "$a" = "$b" ] ==같음 if [ "$a" == "$b" ] = 와 동의어입니다. !=같지 않음 if [ "$a" != "$b" ] 이 연산자는 [[ ... ]] 에서 패턴 매칭을 사용합니다. <아스키 알.......
2016-05-24 00:12:31 |
산소소년