빅데이터 분산 컴퓨팅 -6

Similar documents
빅데이터분산컴퓨팅-5-수정

5장 SQL 언어 Part II

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역

컴파일러

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

RUCK2015_Gruter_public

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

강의 개요

문서 템플릿

슬라이드 1

내지-2도뻂

영상5월_펼침면

강의 개요

(72) 발명자 서진교 경기 용인시 수지구 풍덕천2동 1167 진산마을 삼성5차아파트526동 1004호 조필제 경기 용인시 풍덕천동 유스빌 401호 - 2 -

MySQL-.. 1

SKINFOSEC-CHR-028-ASP Mssql Cookie Sql Injection Tool 분석 보고서.doc

(72) 발명자 이동희 서울 동작구 여의대방로44길 10, 101동 802호 (대 방동, 대림아파트) 노삼혁 서울 중구 정동길 21-31, B동 404호 (정동, 정동상 림원) 이 발명을 지원한 국가연구개발사업 과제고유번호 부처명 교육과학기술부

Chap 6: Graphs

PowerPoint 프레젠테이션

C++-¿Ïº®Çؼ³10Àå

중간고사

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

DBMS & SQL Server Installation Database Laboratory

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

TITLE

Observational Determinism for Concurrent Program Security

11강-힙정렬.ppt

윈도우즈프로그래밍(1)

DocsPin_Korean.pages

Columns 8 through while expression {commands} 예제 1.2 (While 반복문의이용 ) >> num=0

설계란 무엇인가?

SQL

Microsoft PowerPoint - 10Àå.ppt

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

chap 5: Trees

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - 8주차.pptx

ez-md+_manual01

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

김기남_ATDC2016_160620_[키노트].key

결과보고서

PHP & ASP

PowerPoint Template

PowerPoint 프레젠테이션

, Analyst, , 2

Oracle Database 10g: Self-Managing Database DB TSC

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

MS-SQL SERVER 대비 기능

PowerSHAPE 따라하기 Calculate 버튼을 클릭한다. Close 버튼을 눌러 미러 릴리프 페이지를 닫는다. D 화면을 보기 위하여 F 키를 누른다. - 모델이 다음과 같이 보이게 될 것이다. 열매 만들기 Shape Editor를 이용하여 열매를 만들어 보도록

adfasdfasfdasfasfadf

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

Microsoft PowerPoint - Java7.pptx

solution map_....

영상6/7월pdf

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

Microsoft PowerPoint - chap06-1Array.ppt

목차 1. 제품 소개 특징 개요 Function table 기능 소개 Copy Compare Copy & Compare Erase

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

¹Ìµå¹Ì3Â÷Àμâ

Chapter 4. LISTS

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

SSD, TCO(Total Cost of Ownership) 관점 수요 확대 동인 확보 TCO(Total Cost of Ownership) 관점 수요 증가 동인 확대 3D NAND의 응용처는 향후 PC에서 엔터프라이즈로 확대될 것으로 판단된다. 엔터 프라이즈 시장에서는

Discrete Mathematics

歯sql_tuning2

PowerPoint 프레젠테이션

MySQL-Ch10

Microsoft PowerPoint - a10.ppt [호환 모드]

Microsoft PowerPoint - o8.pptx

금오공대 컴퓨터공학전공 강의자료

Chap 6: Graphs

USER GUIDE

OCaml

Lec. 2: MySQL and RMySQL

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

CH04) 쿼리 (Query) 데이터베이스일반 1- 쿼리 (Query) 1) 쿼리의개념 테이블의데이터에서사용자가원하는조건에의해필드를추출하거나레코드를추출할수있는개체로즉, 여러가지방법으로데이터를보고, 변경하고, 분석할수있음 쿼리를폼, 보고서, 데이터액세스페이지등의레코드원본

BibLaTeX을 이용한 한국어 참고 문헌 처리의 가능성

SQL Tuning Business Development DB

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

1217 WebTrafMon II

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

REVERSIBLE MOTOR 표지.gul

Microsoft PowerPoint MySQL 연동.ppt

<C1A62038B0AD20B0ADC0C7B3EBC6AE2E687770>

(72) 발명자 정진곤 서울특별시 성북구 종암1동 이용훈 대전광역시 유성구 어은동 한빛아파트 122동 1301 호 - 2 -

Coriolis.hwp

Chapter 4. LISTS

Tcl의 문법


Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

06/09-101È£ä263»Áö

04/07-08(È£ä263»Áö

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont

Microsoft PowerPoint 유용한 PHP 함수들.ppt

Transcription:

Hive Data Management Join in Hive 빅데이터분산컴퓨팅박영택

Hive 에서의 Joins Hive 에서서로다른데이터간의 Join 은빈번하게발생 Hive 에서지원하는 Join 의종류 Inner joins Outer joins(left, right, and full) Cross joins( Hive 0.1 이상버전 ) Left semi joins equality ( = ) 조건은 join 에서만허용 Valid : customers.cust_id = orders.cust_id Invalid : customers.cust_id <> orders.cust_id Output 의각 records 는각 table 의지정된 key(e.g. customers.cust_id) 로부터찾은데이터 최고의질의응답성능을위해서는가장큰테이블을가장나중에질의하기

Join 문법 Hive 는아래의문법을사용 위의예제는 inner join 임 JOIN 키워드대신에다른타입의 JOIN 사용가능 (e.g. RIGHT OUTER JOIN)

Inner Join 예제 customers 테이블 query 결과 orders 테이블

Left Outer Join 예제 customers 테이블 query 결과 orders 테이블

Right Outer Join 예제 customers 테이블 orders 테이블 query 결과

Full Outer Join 예제 customers 테이블 query 결과 orders 테이블

Outer Join 예제 customers 테이블 orders 테이블 query 결과

Cross Join 예제 disks 테이블 query 결과 sizes 테이블

Sentiment 분석예제 : hive 기반 목적 : 소비자들의 (customers) 제품평가가가장불만족한제품을찾아내고, 그제품에대해다양한키워드들을분석하여문제점의요인을찾아내기위함 Step #1 : 제품들에대한 Ratings 의수치를분석 사용자로부터 Comment 의개수가많고, 실제제품도만족한제품 (Comment 개수 > 50, 평점 high) Comment 의개수는많지만, 제품에대한만족도가낮은제품 (Comment 개수 > 50, 평점 low) Step #2 : 가장평가가안좋은제품에대한평점 Comments 분석 그제품의 Comments 에서가장많이나타난문장추출 (e.g. 2-gram, 3-gram) 가장많이나타난문장들을포함하고있는 Comments 추출 (e.g. ten times more, red, 16 GB USB Flash Drive ) 문제점발견 : 16 GB USB Flash Driver(red) 제품이다른유사제품에비해가격이 10 배이상이었음

Sentiment 분석 (step #1) Sentiment 분석예제를위한 ratings 테이블생성 hive> CREATE TABLE ratings (posted TIMESTAMP, cust_id INT, prod_id INT, rating TINYINT, message STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY \t ; HDFS 에경로생성후파일업로드 $ Hadoop fs mkdir ratings $ Hadoop fs put ratings_2013.txt ratings 테이블에데이터로드 hive> LOAD DATA INPATH ratings INTO TABLE ratings;

Sentiment 분석 (step #1) ratings 테이블의 schema 와 data 확인

제품의평점분석 1 (step #1) 평가횟수가 50 개이상인제품 평점이높은순으로정렬 hive> SELECT prod_id, FORMAT_NUMBER(avg_rating, 2) AS avg_rating FROM (SELECT prod_id, AVG(rating) AS avg_rating, COUNT(*) AS num FROM ratings GROUP BY prod_id) rated WHERE num >= 50 ORDER BY avg_rating DESC LIMIT 1;

제품의평점분석 1 (step #1) 평가횟수가 50 개이상인제품 평점이높은순으로정렬 hive> SELECT prod_id, FORMAT_NUMBER(avg_rating, 2) AS avg_rating FROM (SELECT prod_id, AVG(rating) AS avg_rating, COUNT(*) AS num FROM ratings WHERE num >= 50 GROUP BY prod_id) rated ORDER BY avg_rating DESC LIMIT 1; Inner query(= sub query, nested query) Inner query 는 from 절에서많이쓰이며, SELECT 의결과를 Outer query 에서사용될수있다. from 절에서괄호형태로묶어서사용되며괄호끝에 alias 를정의함으로서 alias 를통해서접근가능 (e.g. rated.prod_id) prod_id 를통해상품을그룹화하고, 각상품별로평점의평균, 평점의개수를출력

제품의평점분석 1 (step #1) 평가횟수가 50 개이상인제품 평점이높은순으로정렬 hive> SELECT prod_id, FORMAT_NUMBER(avg_rating, 2) AS avg_rating FROM (SELECT prod_id, AVG(rating) AS avg_rating, COUNT(*) AS num FROM ratings GROUP BY prod_id) rated WHERE num >= 50 ORDER BY avg_rating DESC LIMIT 1;

제품의평점분석 1 (step #1) 평가횟수가 50 개이상인제품 평점이높은순으로정렬 hive> SELECT prod_id, FORMAT_NUMBER(avg_rating, 2) AS avg_rating FROM (SELECT prod_id, AVG(rating) AS avg_rating, COUNT(*) AS num FROM ratings GROUP BY prod_id) rated WHERE num >= 50 ORDER BY avg_rating DESC LIMIT 1;

제품의평점분석 1 (step #1) 평가횟수가 50 개이상인제품 평점이높은순으로정렬 FORMAT_NUMBER(number, int D) = number 를소수점 D 자릿수만큼표현 hive> SELECT prod_id, FORMAT_NUMBER(avg_rating, 2) AS avg_rating FROM (SELECT prod_id, AVG(rating) AS avg_rating, COUNT(*) AS num FROM ratings GROUP BY prod_id) rated WHERE num >= 50 ORDER BY avg_rating DESC LIMIT 1;

제품의평점분석 1 (step #1) 평가횟수가 50 개이상인제품 평점이높은순으로정렬 hive> SELECT prod_id, FORMAT_NUMBER(avg_rating, 2) AS avg_rating FROM (SELECT prod_id, AVG(rating) AS avg_rating, COUNT(*) AS num FROM ratings GROUP BY prod_id) rated WHERE num >= 50 ORDER BY avg_rating DESC LIMIT 1; 결과 prod_id avg_rating

제품의평점분석 2 (step #1) 가장문제가되는제품을알아내기위해서 평가횟수가 50개이상인제품 평점이낮은순으로정렬 hive> SELECT prod_id, FORMAT_NUMBER(avg_rating, 2) AS avg_rating FROM (SELECT prod_id, AVG(rating) AS avg_rating, COUNT(*) AS num FROM ratings GROUP BY prod_id) rated WHERE num >= 50 ORDER BY avg_rating LIMIT 1;

제품의평점분석 2 (step #1) 평가횟수가 50 개이상인제품 평점이낮은순으로정렬 hive> SELECT prod_id, FORMAT_NUMBER(avg_rating, 2) AS avg_rating FROM (SELECT prod_id, AVG(rating) AS avg_rating, COUNT(*) AS num FROM ratings GROUP BY prod_id) rated WHERE num >= 50 ORDER BY avg_rating LIMIT 1;

제품의평점분석 2 (step #1) 평가횟수가 50 개이상인제품 평점이낮은순으로정렬 hive> SELECT prod_id, FORMAT_NUMBER(avg_rating, 2) AS avg_rating FROM (SELECT prod_id, AVG(rating) AS avg_rating, COUNT(*) AS num FROM ratings GROUP BY prod_id) rated WHERE num >= 50 ORDER BY avg_rating LIMIT 1; 결과 prod_id avg_rating

EXPLODE 를사용하여 Array 를 Records 변환 (step #2) EXPLODE 함수는 array 의각 element 마다하나의 record 생성 SPLIT 과같은함수는 table generating function 임 table generating function 을 EXPLODE 의파라매터로사용할때는 alias 필요 (e.g. AS x)

n-grams (step #2) n-gram 은단어의조합 (n = number of words) Bigram 은연속된두단어의조합 (n = 2) n-gram frequency analysis 는많은 application 에서중요한과정 검색엔진과같은 application 에서검색결과의 spelling 교정에사용 웹페이지에서가장중요한 topics 찾는데사용 social media message등에서트랜드 topics 검색에사용

HIVE 에서의 n-grams(step #2) Hive 에서는 n-grams 를계산하기위한 NGRAMS 함수제공 NGRAMS 함수는 3개의파라매터필요 String 타입의 Array of array 형태, 각 element는 word (e.g. [[ is, great ]]) n-gram 에서의 n 숫자 (number of words) 결과값의출력개수 (top-n, based on frequency) Output 은 2 개의속성을가진 STRUCT 구조의 array 리턴 ngram : n-gram 자체값 (an array of words) estfrequency : n-gram 의각값이몇번나타났는지에대한 count 값

Sentences 를 Words 로변경 (step #2) HIVE 의 SENTENCES 함수는 sentences 를 array of words 로변환 Input 값은하나이상의 sentences 가될수있음 2 개의 Sentences 를 Input 값으로받을경우, 2-dimensional 로변환

Calculating n-grams in HIVE(step #2) NGRAMS 함수는 SENTENCES 함수와자주함께사용 아래의예제에서는 normalize case 를위해 LOWER 사용 그리고 EXPLODE 함수를사용하여 array 형태의결과를 row 형태로변환

제품의평점코멘트분석 1 (step #2) 제품 1274673 의평점코멘트를 ngram 을통해 2 개의단어조합으로구성된 bigrams 를생성 가장빈번하게출력되는 5 개의 bigram 을출력 hive> SELECT EXPLODE(NGRAMS (SENTENCES (LOWER (message)), 2, 5) ) AS bigrams FROM ratings WHERE prod_id = 1274673; message 를모두소문자로변경한후, 문장을단어형태의리스트로변경 <ratings 테이블 >

제품의평점코멘트분석 1 (step #2) 제품 1274673 의평점코멘트를 ngram 을통해 2 개의단어조합으로구성된 bigrams 를생성 가장빈번하게출력되는 5 개의 bigram 을출력 hive> SELECT EXPLODE(NGRAMS (SENTENCES (LOWER (message)), 2, 5) ) AS bigrams FROM ratings WHERE prod_id = 1274673; 2 개의단어조합으로구성된 bigrams 생성 5 개의 most common bigrams 출력 array 형태로 frequency 와함께리턴 [{"ngram":["this","is"],"estfrequency":161.0},{"ngram":["too","expensive"],"estfrequency":100.0}, {"ngram":["the","others"],"estfrequency":67.0},{"ngram":["times","more"],"estfrequency":67.0}, {"ngram":["why","does"],"estfrequency":67.0}]

제품의평점코멘트분석 1 (step #2) 제품 1274673 의평점코멘트를 ngram 을통해 2 개의단어조합으로구성된 bigrams 를생성 가장빈번하게출력되는 5 개의 bigram 을출력 array 의각 element 를순서대로출력 hive> SELECT EXPLODE(NGRAMS (SENTENCES (LOWER (message)), 2, 5) ) AS bigrams FROM ratings WHERE prod_id = 1274673;

제품의평점코멘트분석 1 (step #2) 제품 1274673 의평점코멘트를 ngram 을통해 2 개의단어조합으로구성된 bigrams 를생성 가장빈번하게출력되는 5 개의 bigram 을출력 hive> SELECT EXPLODE(NGRAMS (SENTENCES (LOWER (message)), 2, 5) ) AS bigrams FROM ratings 결과 WHERE prod_id = 1274673;

제품의평점코멘트분석 2 (step #2) 제품 1274673 의평점코멘트를 ngram 을통해 3 개의단어조합으로구성된 bigrams 를생성 가장빈번하게출력되는 5 개의 bigram 을출력 hive> SELECT EXPLODE(NGRAMS (SENTENCES (LOWER (message)), 3, 5) ) AS bigrams FROM ratings WHERE prod_id = 1274673;

제품의평점코멘트분석 2 (step #2) 제품 1274673 의평점코멘트를 ngram 을통해 3 개의단어조합으로구성된 bigrams 를생성 가장빈번하게출력되는 5 개의 bigram 을출력 hive> SELECT EXPLODE(NGRAMS (SENTENCES (LOWER (message)), 3, 5) ) AS bigrams FROM ratings WHERE prod_id = 1274673; 결과

제품의평점코멘트분석 3 (step #2) 지난결과의 ten times more 는상품이너무비싸다는불만과관련이있을가능성이존재 따라서 ten times more 를포함한문장을확인 hive> SELECT message FROM ratings WHERE prod_id = 1274673 AND message LIKE %ten times more% LIMIT 3; LIKE 키워드와함께사용하며, message 문장에서 ten times more 문장이포함된 String 검색 e.g. This is ten times more expensive!

제품의평점코멘트분석 3 (step #2) 지난결과의 ten times more 는상품이너무비싸다는불만과관련이있을가능성이존재 따라서 ten times more 를포함한문장을중복제거후확인 hive> SELECT DISTINCT message FROM ratings WHERE prod_id = 1274673 AND message LIKE %ten times more% LIMIT 3; 결과 red 키워드와뭔가관련성이있어보임

제품의평점코멘트분석 4 (step #2) 지난결과를통해 red 제품에고객들의불만이많다는것을확인했지만, 충분한정보를제공하지못함 따라서 red 가포함되고, 중복이제거된결과를출력 결과 hive> SELECT DISTINCT message FROM ratings WHERE prod_id = 1274673 AND message LIKE %red% LIMIT 3; 1274673 제품이 red 와관련성이있어보이며, 실제로 1274673 이어떤제품인지확인이필요.( 뒷장의 products 테이블활용 )

제품의평점코멘트분석 5 (step #2) product_id 에해당하는제품을확인하기위해 products 테이블생성 hive> CREATE TABLE products (prod_id STRING, brand STRING, name STRING, price INT, cost INT, shipping_wt INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY \t ; HDFS 에경로생성후파일업로드 $ Hadoop fs mkdir products_dualcore $ Hadoop fs put products_dualcore.txt products_dualcore 테이블에데이터로드 hive> LOAD DATA INPATH products_dualcore INTO TABLE products;

제품의평점코멘트분석 5 (step #2) 데이터샘플출력

제품의평점코멘트분석 5 (step #2) 문제가되고있는 red 제품의상세정보확인을위해 prod_id=1274673 을확인 hive> SELECT * FROM products WHERE prod_id = 1274673; 결과

제품의평점코멘트분석 6 (step #2) Brand 가 Orion 이고, 제품명이 16GB USB Flash Drive (Red) 과비슷한제품을출력 hive> SELECT * FROM products WHERE name LIKE %16 GB USB Flash Drive% AND brand= Orion ; 결과 다른제품과비교하여 Red 제품의가격이잘못설정되어 10 배정도비싼가격에올려져있음을발견!!