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