My SQL HDFS MYSQL HDFS Hive Hive HDFS

  • Slides: 54
Download presentation

My. SQL의 데이터를 HDFS로 가져오기 § MYSQL 테이블을 HDFS 를 거쳐 Hive 테이블로 가져오기

My. SQL의 데이터를 HDFS로 가져오기 § MYSQL 테이블을 HDFS 를 거쳐 Hive 테이블로 가져오기 Hive HDFS DATABASE Table Sqoop MYSQL DATABASE Table

My. SQL의 데이터를 HDFS로 가져오기 § My. SQL에 로그온 ‐$ mysql –-user=root –-password=cloudera §

My. SQL의 데이터를 HDFS로 가져오기 § My. SQL에 로그온 ‐$ mysql –-user=root –-password=cloudera § 데이터베이스 목록 확인 ‐mysql> show databases; § 데이터베이스 선택 ‐mysql> use retail_db; § 테이블 목록 확인 ‐mysql> show tables;

My. SQL의 데이터를 HDFS로 가져오기 § ‘categories’ 테이블의 내용 확인 ‐mysql> SELECT * FROM

My. SQL의 데이터를 HDFS로 가져오기 § ‘categories’ 테이블의 내용 확인 ‐mysql> SELECT * FROM categories LIMIT ;

My. SQL의 데이터를 HDFS로 가져오기 § 테이블 ‘categories’를 HDFS로 가져오기 ‐$ sqoop import

My. SQL의 데이터를 HDFS로 가져오기 § 테이블 ‘categories’를 HDFS로 가져오기 ‐$ sqoop import --connect jdbc: mysql: //localhost/retail_db --table categories --fields-terminated-by ‘t’ --username root --password cloudera

My. SQL의 데이터를 HDFS로 가져오기 § 명령어가 정상적으로 동작했는지 확인 ‐$ hadoop fs -ls

My. SQL의 데이터를 HDFS로 가져오기 § 명령어가 정상적으로 동작했는지 확인 ‐$ hadoop fs -ls categories ‐$ hadoop fs -tail categories/part-m-00000

Hive 테이블 생성 테이블 명 § 테이블 생성 칼럼 명 칼럼의 데이터 타입 hive>

Hive 테이블 생성 테이블 명 § 테이블 생성 칼럼 명 칼럼의 데이터 타입 hive> CREATE TABLE categories (category_id INT, category_department_id INT, category_name STRING) ROW FORMAT DELIMITED 불러올 파일의 각 라인을 하나의 레코드로 구분 FIELDS TERMINATED BY ‘t’; 불러올 레코드를 tab으로 구분하여 칼럼에 저장

Hive 테이블에 데이터 불러오기 및 확인 hive> LOAD DATA INPATH ‘categories’ INTO TABLE categories;

Hive 테이블에 데이터 불러오기 및 확인 hive> LOAD DATA INPATH ‘categories’ INTO TABLE categories; hive> SELECT * FROM categories LIMIT 10;

My. SQL의 데이터를 직접 Hive로 가져오기 § MYSQL 테이블을 HDFS 를 거치지 않고 직접

My. SQL의 데이터를 직접 Hive로 가져오기 § MYSQL 테이블을 HDFS 를 거치지 않고 직접 Hive 테이블로 가져오기 Hive HDFS DATABASE Table Sqoop MYSQL DATABASE Table

My. SQL의 데이터를 Hive로 가져오기 § HDFS의 기존 디렉토리를 삭제 $ hadoop fs –rm

My. SQL의 데이터를 Hive로 가져오기 § HDFS의 기존 디렉토리를 삭제 $ hadoop fs –rm –r categories § My. SQL의 ‘categories’ 테이블을 Hive의 ‘hive_retail_db’로 가져오기 $ sqoop import --connect jdbc: mysql: //localhost/retail_db --username root --password cloudera --table categories --hive-database hive_retail_db --hive-import

My. SQL의 데이터를 Hive로 가져오기 § Hive로 가져온 테이블의 내용 확인 hive> SELECT *

My. SQL의 데이터를 Hive로 가져오기 § Hive로 가져온 테이블의 내용 확인 hive> SELECT * FROM categories LIMIT 10;

Hive의 기본 명령어 § LIMIT은 질의문 결과의 레코드 수를 제한 hive> SELECT customer_fname, customer_lname

Hive의 기본 명령어 § LIMIT은 질의문 결과의 레코드 수를 제한 hive> SELECT customer_fname, customer_lname FROM customers LIMIT 10; § ORDER BY는 질의문 결과를 특정 칼럼을 기준으로 정렬 hive> SELECT customer_id, customer_fname FROM customers ORDER By customer_id DESC LIMIT 10; § WHERE는 특정 칼럼 값에 조건을 설정 hive> SELECT * FROM orders WHERE order_id=1287; hive> SELECT * FROM customers WHERE customer_state IN (‘CA’, ‘OR’, ‘WA’, ‘NV’, ‘AZ’);

예제 실행을 위한 테이블 가져오기 § Hive로 가져올 My. SQL의 테이블 내용 확인 mysql>

예제 실행을 위한 테이블 가져오기 § Hive로 가져올 My. SQL의 테이블 내용 확인 mysql> SELECT * FROM customers LIMIT 5; mysql> SELECT * FROM orders LIMIT 5;

예제 실행을 위한 테이블 가져오기 § ‘retail_db’의 ‘customers’ 테이블을 Hive로 가져오기 $ sqoop import

예제 실행을 위한 테이블 가져오기 § ‘retail_db’의 ‘customers’ 테이블을 Hive로 가져오기 $ sqoop import --connect jdbc: mysql: //localhost/retail_db --username root --password cloudera --table customers --hive-database hive_retail_db --hive-import § ‘retail_db’의 ‘orders’ 테이블을 Hive로 가져오기 $ sqoop import --connect jdbc: mysql: //localhost/retail_db --username root --password cloudera --table orders --hive-database hive_retail_db --hive-import

예제 실행을 위한 테이블 가져오기 § ‘retail_db’의 ‘products’ 테이블을 Hive로 가져오기 $ sqoop import

예제 실행을 위한 테이블 가져오기 § ‘retail_db’의 ‘products’ 테이블을 Hive로 가져오기 $ sqoop import --connect jdbc: mysql: //localhost/retail_db --username root --password cloudera --table products --hive-database hive_retail_db --hive-import § ‘retail_db’의 ‘departments’ 테이블을 Hive로 가져오기 $ sqoop import --connect jdbc: mysql: //localhost/retail_db --username root --password cloudera --table departments --hive-database hive_retail_db --hive-import

Hive 쿼리문 사용 예 § 각 도시별 고객의 수를 내림 차순으로 정렬하여 출력 hive>

Hive 쿼리문 사용 예 § 각 도시별 고객의 수를 내림 차순으로 정렬하여 출력 hive> SELECT customer_city, COUNT(*) as num FROM customers GROUP BY customer_city ORDER BY num DESC LIMIT 10; 쿼리 문 내에서 alias를 지정하기 위해 as를 사용

Hive 쿼리문 사용 예 § 각 도시별 고객의 수를 내림 차순으로 정렬하여 출력 hive>

Hive 쿼리문 사용 예 § 각 도시별 고객의 수를 내림 차순으로 정렬하여 출력 hive> SELECT customer_city, COUNT(*) as num FROM customers GROUP BY customer_city ORDER BY num DESC LIMIT 10; customer_city 칼럼을 기준으로 레코드를 그룹화

Hive 쿼리문 사용 예 § 각 도시별 고객의 수를 내림 차순으로 정렬하여 출력 hive>

Hive 쿼리문 사용 예 § 각 도시별 고객의 수를 내림 차순으로 정렬하여 출력 hive> SELECT customer_city, COUNT(*) as num FROM customers GROUP BY customer_city ORDER BY num DESC LIMIT 10; alias가 num인 출력 결과 COUNT(*)를 내림 차순으로 정렬

Hive 쿼리문 사용 예 § 각 도시별 고객의 수를 내림 차순으로 정렬하여 출력 hive>

Hive 쿼리문 사용 예 § 각 도시별 고객의 수를 내림 차순으로 정렬하여 출력 hive> SELECT customer_city, COUNT(*) as num FROM customers GROUP BY customer_city ORDER BY num DESC LIMIT 10; 출력 결과의 갯수를 10개로 제한

Hive 쿼리문 사용 예 § COUNT와 GROUP BY에 대한 2개의 맵리듀스 Job이 실행 Job

Hive 쿼리문 사용 예 § COUNT와 GROUP BY에 대한 2개의 맵리듀스 Job이 실행 Job 2 hive> SELECT customer_city, COUNT(*) as num FROM customers Job 1 GROUP BY customer_city ORDER BY num DESC LIMIT 10;

Hive 쿼리문 사용 예 § COUNT와 GROUP BY에 대한 2개의 맵리듀스 Job이 실행 Job

Hive 쿼리문 사용 예 § COUNT와 GROUP BY에 대한 2개의 맵리듀스 Job이 실행 Job 2 hive> SELECT customer_city, COUNT(*) as num FROM customers Job 1 GROUP BY customer_city ORDER BY num DESC LIMIT 10;

Hive 조인의 사용 예 § 각 고객별 주문 상황을 출력하기 위해 2개의 테이블 ‘customers’와

Hive 조인의 사용 예 § 각 고객별 주문 상황을 출력하기 위해 2개의 테이블 ‘customers’와 ‘orders’을 조인 customers Join orders hive> SELECT customer_lname, order_id, order_status FROM customers c JOIN orders o ON (c. customer_id = o. order_customer_id) LIMIT 10;

Hive 조인의 사용 예 #1 § 각 고객별 주문 상황 보기 hive> SELECT customer_lname,

Hive 조인의 사용 예 #1 § 각 고객별 주문 상황 보기 hive> SELECT customer_lname, order_id, order_status FROM customers c JOIN orders o ON (c. customer_id = o. order_customer_id) LIMIT 10;

Hive 조인의 사용 예 #2 § 각 고객별 주문 상황 보기 products Join categiries

Hive 조인의 사용 예 #2 § 각 고객별 주문 상황 보기 products Join categiries hive> SELECT category_id, category_name, product_name FROM categories c JOIN products p ON(c. category_id = p. product_category_id) LIMIT 10;

Hive 조인의 사용 예 #2 § 카테고리별 제품 목록 보기 hive> SELECT category_id, category_name,

Hive 조인의 사용 예 #2 § 카테고리별 제품 목록 보기 hive> SELECT category_id, category_name, product_name FROM categories c JOIN products p ON(c. category_id = p. product_category_id) LIMIT 10;

Hive 조인의 사용 예 #3 § 카테고리가 속한 과 를 보기 categiries Join departments

Hive 조인의 사용 예 #3 § 카테고리가 속한 과 를 보기 categiries Join departments hive> SELECT category_id, category_name, department_name FROM categories c JOIN departments d ON(c. category_department_id = d. department_id) LIMIT 10;

Hive 조인의 사용 예 #3 § 카테고리가 속한 과 를 보기 hive> SELECT category_id,

Hive 조인의 사용 예 #3 § 카테고리가 속한 과 를 보기 hive> SELECT category_id, category_name, department_name FROM categories c JOIN departments d ON(c. category_department_id = d. department_id) LIMIT 10;