빅데이터(BigData)/sqoop

sqoop 실행 시 unrecognized argument 에러가 발생하는 경우 해결 방법

leebaro 2020. 2. 5.
728x90

RDBMS(Oracle)의 데이터를 Hive 테이블로 옮기기 위해 sqoop import를 이용했다.

 

먼저 sqoop으로 RDBMS에서 데이터를 정상적으로 조회할 수 있는지 확인하기 위해서 sqoop eval 명령을 이용했다.

 

 sqoop eval \
--connect jdbc:oracle://localhost/db \
--username 'admin' \
--password 'pass$word' \
--query "SELECT * FROM employee where rownum < 3"

이 때 "unrecognized argument SELECT * ...." 와 같은 메시지와 함께 에러가 발생했다.

 

아래와 같이 공식 홈페이지에 가서 확인해봐도 문제가 눈에 잘 보이지 않았다.

 

마침내 원인을 찾았다. 문제는 username과 password에 따옴표를 넣으면 안된다는 것이다.

 

따옴표를 제거하고 이제 되나 싶었더니 또 유사한 에러 메시지가 나타났다.

 

삽질 끝에 찾은 원인은 비밀번호에 특수기호가 있을 때는 "\"를 넣어줘야 한다. 

수정 전 비밀번호 수정 후 비밀번호
pass$word

pass$word

이 때에도 비밀번호는 따옴표로 감싸면 안된다.

 

두 가지 문제를 해결하고 나니 접속이 잘 됐다.

 

결론

* username과 password에는 따옴표를 쓰면 안된다.

* 비밀번호에 특수기호가 있을 경우 앞에 역슬러시를 넣어야 한다.

728x90