2017-12-26 29 views

답변

0

를 사용하여 직접 하이브 데이터 가져 오기이 명령을

sqoop import --connect "jdbc:sqlserver://11.11.111.11;databaseName=dswFICO" \ --username sqoop\ --password sqoop \ --driver com.microsoft.sqlserver.jdbc.SQLServerDriver \ --table KNA1 \ --split-by rowkey --hive-import -m 1 

당신이 손실 후 가장 좋은 방법은 기존 HDFS 디렉토리를 통해 외부 테이블을 생성하는 것입니다로드하는 동안 데이터가 복사 소스를 원하지 않는 경우 또는 원본 디렉터리의 복사본을 만들고 새 디렉터리 위치를 가리키는 외부 하이브 테이블을 만들 수도 있습니다.

+0

안녕하세요, 빠른 답장을 보내 주셔서 감사 드리며이를 완료했습니다. Sqoop을 사용하여 SQL에서 하이브로 데이터를 성공적으로 임포트 할 수 있습니다. 내 질문은 : 인스턴스 들어, 처음에 SQL 테이블에 5 열 데이터와 5 컬럼과 나는 sqoop를 사용하여 데이터를 가져올 수 있습니다. 이제 SQL 테이블이 8 개의 열 (3 개의 새로운 열)으로 변경되었습니다. 이제 어떻게 새 열을 하이브에있는 기존 테이블로 가져 오겠습니까? 하이브 테이블에서 데이터 손실없이 새 열 데이터 (3 열 데이터)를로드해야합니다. 데이터를로드하는 데 사용할 수있는 방법은 무엇입니까? – Magesh

+0

Sqoop은 순간에 HIVE 외부 테이블을 지원하지 않습니다. 특종을 사용하는 모든 가져 오기는 관리되는 테이블을 만듭니다. 실제 시나리오에서는 EXTERNAL 테이블을 갖는 것이 매우 중요합니다. 지금 우리는 테이블을 대용량이 아닌 외부 테이블로 만들기 위해 테이블 ​​속성을 변경하기 위해 ALTER 문을 실행해야하지만 필요한 테이블 형식을 지정하기 위해 특종에 옵션이 있습니다. –

0

sqoop 가져 오기에서 외부 테이블을 얻을 수 있습니다. 여기에서 hdfs 파일에 기본적으로 데이터를 가져오고 테이블 위에 외부 테이블을 작성해야합니다.

데이터를 hdfs로 가져 오지만 하이브와 관련이없는 간단한 sqoop 가져 오기 예제.

$ sqoop import \ 
--connect jdbc:mysql://localhost/userdb \ 
--username root \ 
--table emp_add \ 
--m 1 \ 
--target-dir /queryresult 

/queryresult 경로에 데이터가 있으면 해당 위치의 맨 위에 외부 테이블을 작성하기 만하면됩니다.