2014-06-14 5 views
1

Apache Sqoop에 관한 고유 한 쿼리가 있습니다. 내 HDFS 파일에 아파치 Sqoop 가져 오기 기능을 사용하여 데이터를 가져 왔습니다.Sqoop SQL 서버로 내보내기 VS 대량 SQL 서버에 삽입

다음으로,. Hadoop (Sqoop)을 사용하여 다른 데이터베이스에 데이터를 다시 저장해야합니다 (기본적으로 한 데이터베이스 공급 업체에서 다른 데이터베이스 공급 업체로 데이터 전송을 수행하고 있습니다).

SQL Server에 데이터를 넣으려면 두 가지 옵션이 있습니다.

1) Sqoop 내보내기 기능을 사용하여 RDBMS (SQL 서버)에 연결하고 데이터를 직접 내 보냅니다.

2) copyToLocal 명령을 사용하여 HDFS 데이터 파일 (CSV 형식)을 내 로컬 컴퓨터에 복사 한 다음 해당 CSV 파일에 대해 BCP (또는 대량 삽입 쿼리)를 수행하여 데이터를 SQL Server 데이터베이스에 저장합니다.

나는 완벽하게 (또는 오히려 올바른) 접근 방식을 알고 싶습니다. 두 가지 중 어느 것이 더 빠릅니까? - HDFS에서 RDBMS 로의 일괄 삽입 또는 Apache Sqoop 내보내기. ??

하나의 데이터베이스 공급 업체에서 다른 데이터베이스 공급 업체로 더 빠르게 이전 할 수있는 위에서 언급 한 두 가지 방법 외에 다른 방법이 있습니까? 나는 6-7 매퍼를 사용하고

제안하고 친절하게 내 질문이 명확하지 않다 있으면 알려 주시기 바랍니다 (기록이 전송되는 약 20 ~ 25 백만입니다).

미리 감사드립니다.

답변

2

한 벤더에서 다른 벤더로 ETL을 수행하는 경우 Sqoop/HDFS를 통과하는 것이 좋지 않습니다. Sqoop은 데이터가 HDFS에서 유래되었거나 HDFS에 머물러있는 경우 완벽한 의미를 갖습니다. 또한 세트가 너무 커서 변환 단계의 대규모 클러스터를 보증 할 수 없다면 sqoop을 고려할 것입니다. 그러나 단지 2 천 5 백만 건의 기록만으로는 가치가 없습니다.

SQL Server 가져 오기를 사용하면 대량 가져 오기의 경우 대량 삽입이 필요한 minimally logging을 얻는 것이 중요합니다. 벌크 옵션을 필수로 만들만큼 큰 것은 아니지만 AFAIK sqoop 또는 sqoop2는 아직 SQL Server 용 대량 삽입을 지원하지 않습니다.

대신 SSIS을 권장합니다. sqoop보다 훨씬 성숙하며 bulk insert task이고 rich transformation featureset입니다. 작은 수입은 SSIS가 처리 할 수있는 수준입니다.

+0

감사합니다. Remus, 내 질문에 대한 답변입니다. 고마워. – user2648569

+0

@Remus : 하나의 공급 업체에서 다른 공급 업체로의 ETL이 아닌 경우 하이브/hdfs에서 SQL 서버로 내보내기위한 목적으로 BCP 및 SQOOP 중에서 가장 좋은 옵션입니다. – loknath