Oracle에서 Hive로 일부 데이터를 이동해야하며 Sqoop이 유용한 도구라는 것을 알았습니다. 문제는 쿼리를 처리하고 결과를 대상 데이터베이스의 테이블에 삽입해야한다는 것입니다.쿼리 절이있는 Sqoop
오라클 함수 결과 -> HiveDB.myTable
내가이 명령을 발견
sqoop import --connect jdbc:oracle:thin:@******:1522/** --username myUsername --password pwd --query '...' --hive-import --split-by "myID" --hive-table "hive-table" --hive-database "hive-database"
을하지만 난 --target-dir
의무를 지정해야합니다 나는에 쓰기 권한이 없습니다 HDFS.
--table
을 사용하면 --target-dir
이 필요하지 않기 때문에 --query를 사용하는 경우에만 해당됩니다.
쿼리를 사용하여 "--target-dir"
속성을 피할 방법이 있는지 아는 사람이 있습니까?
쿼리 옵션에 target-dir을 사용하는 것을 피할 수 없습니다. HDFS에서 쓸 수있는 권한이 없다고 말하면 테이블 옵션에서 target-dir을 무시하도록 선택한 경우 SQOOP은 HDFS에 기록되지만 기본 위치에 있기 때문에 사실 일 수 없습니다. 기본 위치는/user/hive/warehouse//<하이브 테이블 이름>입니다. 이 위치를 target-dir로 시도하십시오. 데이터가 거기에 쓰여질 것이라고 확신합니다. –
Ramesh
또 다른 옵션은 --target-dir이 필요없는 "--where"옵션을 사용하는 것입니다. 이 옵션은 단일 테이블에서 가져 오는 경우 작동합니다. –
@Ramesh --target-dir/user/hive/warehouse/<하이브 데이터베이스>/<하이브 테이블 이름>을 지정하려고했으나/user/hive/warehouse 폴더에서 읽거나 쓸 수 없습니다. – gnobile