아래의 솔루션에서 MySQL을 사용하고 있지만 다른 데이터베이스에도 동일하게 적용해야합니다.
$ hadoop fs -cat sqoop_export
W1, X1, Y1, Z1
W2, X2, Y2, Z2
W3, X3, Y3, Z3
는 MySQL의 두 테이블을 만듭니다 : HDFS에서 다음 플랫 파일 만들기
다음 다음 4 개 개의 입력 값을받는 저장 프로 시저를 만들
mysql> create table A (col1 VARCHAR(20), col2 VARCHAR(20));
Query OK, 0 rows affected (0.08 sec)
mysql> create table B (col3 VARCHAR(20), col4 VARCHAR(20));
Query OK, 0 rows affected (0.01 sec)
을하고는 처음 두를 삽입 첫 번째 표와 마지막 두 표를 두 번째 표에 입력하십시오.
mysql> delimiter //
mysql> CREATE PROCEDURE insert_two_tables (IN c1 VARCHAR(20), IN c2 VARCHAR(20), IN c3 VARCHAR(20), IN c4 VARCHAR(20)) BEGIN INSERT INTO A(col1, col2) VALUES(c1, c2); INSERT INTO B(col3, col4) VALUES(c3, c4); END//
Query OK, 0 rows affected (0.04 sec)
이제 sqoop ex
이
$ sqoop export --connect jdbc:mysql://localhost/sqoop_export --username xyz --password test --call insert_two_tables --export-dir sqoop_export
내보내기 프로세스가 성공적으로 완료 :
14/03/24 17:52:53 INFO mapred.JobClient: Physical memory (bytes) snapshot=668643328
14/03/24 17:52:53 INFO mapred.JobClient: Virtual memory (bytes) snapshot=7584153600
14/03/24 17:52:53 INFO mapred.JobClient: Total committed heap usage (bytes)=1175584768
14/03/24 17:52:53 INFO mapreduce.ExportJobBase: Transferred 691 bytes in 16.8329 seconds (41.0506 bytes/sec)
14/03/24 17:52:53 INFO mapreduce.ExportJobBase: Exported 3 records
는 이제 두 개의 테이블이 있는지 확인 포트는 그러나 테이블 이름을 지정하지 않는 대신에 위에서 만든 저장 프로 시저를 호출하는 --call 옵션을 사용하여 우리가 찾고 한 데이터 :
mysql> select * from A;
+------+------+
| col1 | col2 |
+------+------+
| W3 | X3 |
| W2 | X2 |
| W1 | X1 |
+------+------+
3 rows in set (0.00 sec)
mysql> select * from B;
+------+------+
| col3 | col4 |
+------+------+
| Y3 | Z3 |
| Y2 | Z2 |
| Y1 | Z1 |
+------+------+
3 rows in set (0.00 sec)
그래서 저장 프로 시저를 사용
, HDFS에 하나 개의 플랫 파일은 데이터베이스에 여러 테이블로 내보낼 수 있습니다.
저장 프로 시저를 사용하지 않으려면 돼지를 사용하여 HDFS에 두 개의 플랫 파일 (col1, col2 및 col3, col4가있는 파일)을 만드는 것이 좋습니다. 그런 다음 각 플랫 파일에서 데이터베이스의 해당 테이블로 두 개의 sqoop 내보내기를 개별적으로 수행 할 수 있습니다.
Sqoop 내보내기 기능 --columns 옵션이지만 HDFS의 플랫 파일에 비해 데이터베이스 끝에 더 많은 열이있는 경우에만 유용합니다. 저장 프로 시저가 필요한 다른 방향으로 보인다. SQOOP-749 테이블을 지정하지 않고 저장 프로 시저를 호출하는 기능은 Sqoop 버전 1.4.3 이상에서 사용할 수 있습니다. 위 예제에서 Hadoop 2.0.0과 Sqoop 1.4.3을 사용했습니다.