데이터
저는 지난번 hive 포스팅에서 설정해 두었던 로컬 기기의 MySQL서버를 사용하겠습니다.
그리고 데이터는 하둡 1.0에서 사용했던 carriers.csv파일을 사용합니다.
이 데이터에 관련된 정보는 아래의 포스팅에서 찾아보실 수 있습니다.
https://jyoondev.tistory.com/57
carrier.csv파일을 조금 다른식으로 고쳤습니다.
아래 파이썬 스크립트를 이용하면, ","를 모두 지우게 되고, 컬럼 사이를 \t를 사용해 나누게 됩니다.
with open("carriers.csv", 'r') as in_file, \
open("carriers_new.csv", 'w') as out_file:
for line in in_file.readlines()[1:]:
line = line.replace("\"")
line_splitted = line.split(",")
first = "{}\t{}".format(line_splitted[0], line_splitted[1])
second = "".join(line_splitted[2:])
out_file.write(first+second)
MySQL 테이블 생성
먼저 위의 데이터를 MySQL로 가지고 들어올 테이블을 생성하겠습니다.
아래 스크립트로 MySQL에 테이블을 생성해줍니다.
mysql> create table carriers (
code varchar(10), description varchar(50),
primary key (code)
);
테이블을 생성한 뒤 csv데이터를 테이블로 가져옵니다.
mysql> load data local infile '~/carriers_new1.csv'
into table carriers
fields terminated by '\t';
가져온 뒤 select 명령으로 테이블의 데이터를 확인해줍니다.
mysql> select * from carriers
order by code
limit 10;
Sqoop 데이터 임포트
이제 Sqoop을 사용해 방금 생성한 테이블의 데이터를 임포트 하도록 하겠습니다.
스쿱은 내부적으로 DB에 접속해 데이터를 가져올 때 맵리듀스의 맵을 사용합니다.
먼저 이를 수행하기 위한 설정 스크립트를 작성하겠습니다.
import.sh파일을 만들고 아래를 작성해줍니다.
--username
doop
--password
1234
--connect
jdbc:mysql://mysql데이터베이스ip:3306/import
--table
carriers
--split-by
n_regionkey
-m
위의 설정들은 대부분 명확합니다.
mysql계정의 username과 password를 설정해주고 url, 테이블 이름을 설정해줍니다.
마지막으로 --split-by는 한번에 가져오면 에러가 나기 때문에 key를 사용해 나눠 가져오라는 의미입니다.
MySQL 드라이버
Sqoop에서 MySQL을 접속하려면 드라이버가 필요합니다.
이전 포스팅 중 Hive MySQL설정 포스팅을 보면 MySQL드라이버에 관한 내용이 나와있습니다.
https://jyoondev.tistory.com/69
저는 해당 파일을 Hive에 넣어 두었기 때문에 그 파일을 복사해와서 사용하겠습니다.
> cp hive/lib/mysql-connector-java-5.1.22-bin.jar sqoop/lib/
위의 파일을 hive의 lib폴더에서 가져와 sqoop의 lib폴더에도 넣어준 것입니다.
임포트 실행
이제 임포트를 실행하겠습니다.
위에서 작성한 설정파일을 사용해 임포트를 실행합니다.
> sqoop import --options-file ./import.sh
결과를 확인해보겠습니다.
결과 파일은 hdfs의 /user/doop/carriers 디렉토리에 떨어집니다.
> hdfs dfs -ls /user/doop/carriers
Found 2 items
-rw-r--r-- 3 doop supergroup 0 2019-07-24 02:35 /user/doop/carriers/_SUCCESS
-rw-r--r-- 3 doop supergroup 36171 2019-07-24 02:35 /user/doop/carriers/part-m-00000
파일의 내용은 다음과 같습니다.
> hdfs dfs -cat /user/doop/carriers/part-m-00000 | head -10
04Q,Tradewind Aviation
05Q,Comlux Aviation AG
06Q,Master Top Linhas Aereas Ltd.
07Q,Flair Airlines Ltd.
09Q,Swift Air LLC
0BQ,DCA
0CQ,ACM AIR CHARTER GmbH
0FQ,Maine Aviation Aircraft Charter LLC
0GQ,Inter Island Airways d/b/a Inter Island Air
0HQ,Polar Airlines de Mexico d/b/a Nova Air
데이터의 내용을 잘 가지고 들어온 것을 확인할 수 있습니다.
참고자료
'빅데이터 > 하둡 2' 카테고리의 다른 글
하둡 2.0 튜토리얼 - (10) 아파치 스쿱 설치 (0) | 2019.07.25 |
---|---|
하둡 2.0 튜토리얼 - (9) 하이브 QL (0) | 2019.07.24 |
하둡 2.0 튜토리얼 - (8) 하이브 MySQL 메타스토어 (0) | 2019.07.23 |
하둡 2.0 튜토리얼 - (7) 아파치 하이브 설치 (0) | 2019.07.23 |
하둡 2.0 튜토리얼 - (6) 얀 명령어 (0) | 2019.07.22 |