빅데이터 부트캠프 45일차
SQOOP (SQL to Hadoop)
- 관계형 데이터베이스(RDB)와 분산 파일 시스템(HDFS) 사이의 양방향 데이터 전송을 위해 설계된 오픈소스 소프트웨어
- 기존에 존재하는 RDB에 있는 데이터를 HDFS로 전송
※ Flume은 새로 생성된 데이터를 실시간으로 전송 & Hadoop 이외의 대용량 저장소로 전송 가능
- sqoop import 시 primary key가 지정되어 있지 않으면 import 불가능
- scoop은 리눅스에서 명령어를 입력해야 함 (MySQL, Hadoop X)
- JDBC(Java Database Connectivity) = Java에서 DB에 접속할 수 있도록 하는 자바 API
MySQL(RDB)에서 Hadoop으로 전송
- sqoop import --connect jdbc:mysql://localhost/DB명 --table 테이블명 --username 사용자명 --password MySQL비밀번호 --columns "가져올 칼럼명 지정" --target-dir 테이블을 저장할 하둡 경로
(특정 DB에서 테이블 하나만 Hadoop으로 전송)
ex) sqoop import --connect jdbc:mysql://localhost/test --table salaries --username root --password hortonworks1 --columns "id, gender, age, salary, zipcode" --target-dir /user/root/sqoop_out2
- sqoop import-all-tables --connect jdbc:mysql://localhost/DB명 --username 사용자명 --password MySQL비밀번호 --exclude-tables 제외할 테이블명 --columns "가져올 칼럼명 지정" --warehouse-dir 테이블을 저장할 하둡 경로
(특정 DB에서 모든 테이블을 Hadoop으로 전송)
Hadoop에서 MySQL(RDB)로 전송
- sqoop export --connect jdbc:mysql://localhost/DB명 --table 테이블명 --username 사용자명 --password MySQL비밀번호 --export-dir 테이블이 저장되어 있는 하둡 경로 --columns "가져올 칼럼명 지정"
(Hadoop에서 MySQL로 전송하는거라 --columns를 맨 뒤에 적음)
- export(Hadoop에서 MySQL(RDB) 전송)는 테이블 하나씩만 전송 가능
sqoop 이용하여 MySQL 명령어 사용
- sqoop eval --connect jdbc:mysql://localhost/DB명 -- username 사용자명 --password MySQL비밀번호 --query 'MySQL 명령어'