728x90

# 목차

[1] sqoop help
[2] sqoop import : table → HDFS
[3] 인수 종류
[4] 테스트


[1] sqoop help

1. Available commands:

  •   codegen : Generate code to interact with database records
  •   create-hive-table : Import a table definition into Hive
  •   eval :  Evaluate a SQL statement and display the results
  •   export : Export an HDFS directory to a database table
  •   help : List available commands
  •   import :  Import a table from a database to HDFS
  •   import-all-tables : Import tables from a database to HDFS
  •   import-mainframe : Import datasets from a mainframe server to HDFS
  •   job :  Work with saved jobs
  •   list-databases : List available databases on a server
  •   list-tables : List available tables in a database
  •   merge  : Merge results of incremental imports
  •   metastore : Run a standalone Sqoop metastore
  •   version : Display version information


[2] sqoop import : table → HDFS


1. 사용 방법 :
$ sqoop import (generic-args) (import-args)
$ sqoop-import (generic-args) (import-args)


[3] 인수 종류


1. 공통 인수들(Common Arguments)

  • ---connect <jdbc-uri> : jdbc connect string(Database Connection URL)
  • --connection-manager <class-name> : Specify connection manager class to use
  • --driver <class-name> : Manually specify JDBC driver class to use(Database Driver Class Name)
  • --hadoop-mapred-home <dir> : Override $HADOOP_MAPRED_HOME
  • --help : 사용 지침
  • --password-file : 인증 암호가 있는 파일 경로 설정
  • -P : 콘솔에서 비밀번호(password) 읽음
  • --password <password> : 인증 비밀번호(password) 설정
  • --username <username> : 인증 유저명 설정
  • --verbose : 작업하는 동안 정보 출력
  • --connection-param-file <filename> : 연결하는데 필요한 파라미터들이 들어 있는 특성 파일
  • --relaxed-isolation : Set connection transaction isolation to read uncommitted for the mappers.



--7.2.1. Connecting to a Database Server--
2. 유효성 검사 인수들(Validation Arguments)

  • --validate : 복사된 데이터의 유효성을 검사하고 단일 테이블 복사만 지원
  • --validator <class-name> : 사용할 Validator class를 구체화
  • --validation-threshold <class-name> : 사용할 Validation threshold class를 구체화
  • --validation-failurehandler <class-name> : 사용할 Validation failure handler class를 구체화



3. 중요 제어 인수들(Import Control Arguments)

  • --append : HDFS에 존재하는 데이터셋에 데이터 추가
  • --as-avrodatafile : Avro 데이터 파일로 데이터 가져와서 넣기
  • --as-sequencefile : SequenceFiles 데이터 파일로 데이터 가져와서 넣기
  • --as-textfile : text로 데이터 가져와서 넣기(default)
  • --as-parquetfile : Parquet 파일로 데이터 가져와서 넣기
  • --boundary-query <statement> : 분할 생성에 사용할 경계 쿼리
  • --columns <col,col,col…> : 테이블에 넣을 컬럼들
  • --delete-target-dir : 데이터를 가져와서 넣을 타겟 디렉토리가 존재한다면 삭제
  • --direct : 데이터베이스가 있으면 direct connector를 사용
  • --fetch-size <n> : 한 번에 데이터베이스로부터 읽을 entry의 수
  • --inline-lob-limit <n> : inline LOB 최대 사이즈 설정
  • -m,--num-mappers <n> : n개의 map task들을 병렬로 import 사용 → -m1 사용 권장?
  • -e,--query <statement> : 쿼리 결과를 import
  • --split-by <column-name> : 작업 단위를 분할하는 데 사용되는 테이블의 컬럼
  • --split-limit <n> :
  • --autoreset-to-one-mapper
  • --table <table-name> : 읽을 테이블명([스키마.]테이블명)
  • --target-dir <dir> : HDFS 대상 디렉토리
  • --temporary-rootdir <dir>
  • --warehouse-dir <dir>
  • --where <where clause> : import에 사용할 where 절
  • -z,--compress
  • --compression-codec <c>
  • --null-string <null-string> : string 타입 NULL 대신 들어갈 값 설정
  • --null-non-string <null-string> : string이 아닌 타입에 NULL 대신 들어갈 값 설정

 

cf) Driver Class 관련 에러 발생 시 sqoop/lib에 jar가 있고 버전이 맞는지 확인!



[4] 테스트

1) text(default) data type으로 넣어서 create table 해서 데이터 업로드 성공한 명령어 예시
sqoop import --connect jdbc:mysql://***.***.***.***:**** --driver com.mysql.cj.jdbc.Driver --username **** --password ***** --query 'select * from default.sqoop_test_001 where $CONDITIONS' --split-by column01 --target-dir /warehouse/tablespace/managed/hive/hdfs_sqoop_test_001
위 명령어 실행 후에 테이블 생성하면 테이블로 볼 수 있음
→ 폴더가 이미 존재해있으면 안 됨

2) connection 테스트
sqoop list-databases --connect jdbc:mysql://***.***.***.***:**** --username **** --password *****


3) sql 파일을 활용한 방법
sqoop import \
--connect jdbc:mysql://loclhost:7777/db?zeroDateTimeBehavior=convertToNull \
--username scott \
--password tiger \
--query '`cat /~path/test_query.sql'\
--target-dir hdfs://localhost/user/hadoop/


728x90

+ Recent posts