중화사전망 - 서예자전 - 갑골문에서 벌집까지

갑골문에서 벌집까지

Sqoop 를 사용하여 Oracle 에서 Hive 로 데이터를 가져오는 방법

데이터를 입력합니다

HADOOP_HOME 을 설정합니다

$ Hadoop _ home =/path/to/some/Hadoop sq OOP 가져오기 매개 변수 ...

적절한 Sqoop 를 다운로드하여 하드 드라이브에 압축을 풉니다. 즉, Sqoop 버전이 Hadoop 버전과 일치해야 합니다. 필자의 Hadoop 버전은 1.03 이고 다운로드한 Sqoop 버전은 1.4.2 입니다.

$ tarzvxf sq OOP-1.4.2.bin _ _ Hadoop-1.0.0.tar.gz

해당 JDBC 드라이버를 다운로드하고 다운로드한 JDBC 드라이버를 Sqoop 의 lib 폴더에 배치합니다.

데이터를 입력합니다

$ sq oopimport-hive-import-connect JDBC: Oracle: thin: @192.168 ..

데이터베이스 이름: 데이터베이스 이름

사용자 이름: 사용자 이름

암호: 암호

테이블 이름: 테이블 이름

-m: 데이터를 가져오는 동시 프로세스 수; 기본값은 4 입니다. 가져온 데이터가 크지 않은 경우 1 으로 설정하면 가져오기 속도가 빨라집니다. 일반적으로 Sqoop 는 기본 키를 사용하여 데이터를 균등하게 나눕니다. 병렬 가져오기를 수행할 때 관련 분할 열 등을 설정할 수 있습니다. 자세한 내용은 공식 문서를 참고하세요.

Oracle 이 원격 컴퓨터에 설치된 경우 Sqoop 가 Oracle 이 있는 컴퓨터에 대해 ping 을 수행할 수 있는지 확인합니다. 예를 들어 Oracle 이 windows 7 에 설치된 경우 windows 7 방화벽을 꺼야 할 수 있습니다. 또한 원격으로 액세스할 수 있도록 Oracle 을 구성해야 합니다.

사용자 이름과 테이블 이름은 따옴표로 묶인 대/소문자를 혼합하여 만들지 않는 한 대문자여야 합니다.

아주 이상한 실수.

데이터를 가져오는 동안 가져오기 시 오류를 묻지 않고 HDFS 에서 생성된 관련 파일을 보았지만 Hive 에서 show TABLES 명령을 사용할 때 새로 가져온 테이블을 볼 수 없다는 문제가 발견되었습니다. 이 시점에서 두 가지 솔루션이 있습니다. 하나는 Hive 에서 CREAT 명령을 사용하여 수동으로 테이블을 만든 다음 다른 테이블을 선택하면 테이블에 데이터가 있음을 알 수 있습니다. 그래서 저는 테이블의 메타데이터가 가져온 후 Hive 에 기록되지 않았기 때문인 것 같습니다. 작성자가 관련 정보를 검색하고 Hive 가 기본적으로 메타데이터를 derby 에 저장한다는 사실을 발견했기 때문에 작성자는 derby 를 MySQL 로 변경하는 것을 고려했습니다.

방법:/s/blog _ 3fe961ae0101925l.html

메타데이터를 MySQL 에 저장하면 가져오기 후 문제가 없음을 알 수 있습니다.

증분 가져오기

또 다른 문제는 테이블에 새로 추가된 부분을 가져오려는 경우 check-column, -incremental 및-last-value, -check-column 이라는 세 가지 매개변수를 사용하여 검사할 열을 지정할 수 있다는 것입니다 -incremental 이 append 인 경우 Sqoop 는-check-column 으로 지정된 열의 값이-last-value 로 지정된 값보다 큰 레코드를 임포트합니다. -incremental 이 lastmodified 인 경우 Sqoop 는-check-column 으로 지정된 열 값 (즉, 타임스탬프) 이-last-value 로 지정된 타임스탬프에 가까운 레코드를 가져옵니다. 예를 들어 다음 명령은 열 ID 값이 4 보다 큰 모든 레코드를 가져올 수 있습니다.

$ sq oopimport-hive-import-connect JDBC: Oracle: thin: @192.168 ..