관계형데이터베이스와 하둡 주고받기 명령어(sqoop)
환경: hortonworks 에서 교육용으로 실시
import => 데이터베이스에서 데이터들을 하둡으로 가져오기
스쿱이용하여 데이터베이스 테이블 내용 가져오기
sqoop import --connect jdbc:mysql://localhost/test --table salaries --username root --target-dir /sqoop_out
=> test 데이터베이스에서 table 명이 salaries인 데이터들을 타겟 디렉토리인 sqoop_out(하둡)에 넣습니다.
파일 내용보기
hadoop fs -cat /sqoop_out/*
=> sqoop_out내 내용 보기
가져온 파일 목록 보기
hadoop fs -ls /sqoop_out
=> sqoop_out내 목록 보기
여러테이블을 한번에 가져오기
(import -> import-all-tables)
--exclude-tables : 제외할 테이블
--warehouse-dir : 복수테이블 import할 때 --target-dir 대신 사용
sqoop import-all-tables --connect jdbc:mysql://localhost/test --username root --exclude-tables test3 --warehouse-dir /sqoop_out2
=> test3을 제외하고 나머지를 sqoop_out2(하둡)으로 가져오기.
확인 : hadoop fs -ls /sqoop_out2/
내용확인: hadoop fs -cat /sqoop_out2/test1/*
조건으로 가져오기
sqoop import --connect jdbc:mysql://localhost/test --table salaries --username root --target-dir /sqoop_out
--where 'gender="M"'
export => 역으로 하둡에서 데이터들을 데이터베이스 테이블로 가져오기
sqoop_out안에 내용을 sal_export 테이블에 넣어준다.
sqoop export --connect jdbc:mysql://localhost/test --table sal_export --username root --export-dir /sqoop_out/
=> export 로 테이블 sal_export에 /sqoop_out 내 내용들을 넣어주기
=> 즉 하둡에서 DB로
eval =>하둡에서 쿼리 사용하기
sqoop eval --connect jdbc:mysql://localhost/test --username root --query 'SELECT~~~~'
eval --e => 하둡에서 쿼리 사용하기
sqoop eval --connect jdbc:mysql://localhost/test --username root --e 'INSERT~~~~~~'
하둡에서 테이블 목록,데이터베이스 목록 확인하기
sqoop list-tables --connect jdbc:mysql://localhost/test --username root
sqoop list-databases --connect jdbc:mysql://localhost/test --username root