2014-11-18 2 views
2

hadoop 커넥터없이 Hive를 Vetica로 크고 빠르게 내보내는 방법을 알려주십시오.유닉스 파이프를 사용하여 vertica 데이터를 익스포트하는 방법

현재 유닉스 Namedpipe 을 통해 동일한 것을 내보내고 있지만 성능이 좋지 않습니다.

거의 5 개의 병렬 스레드로 데이터를 vertica에로드하고 시간은 16 억 개의 레코드 세트에 대해 약 230 분입니까?

이 성능을 개선하는 데 도움을주세요. 내보내기를 최적화 할 수 있습니까?

덕분에 우리는 명명 된 파이프 (에서는 mkfifo)하지만 표준 익명 쉘 파이프를 사용하지 않는,이 일을하는

+0

당신이 무엇을 요구하고 있는지 분명하지 않으며, 예제 코드 나 자세한 내용을 제공 할 수도 있습니다. – EternalHour

+0

이봐, 실제로 우리는 하이브에서 큰 테이블을 하이브에서 버티칼로 옮기기를 계획하고있다. 유닉스 파이프 덕분에 처음에는 하이브 테이블에서 col1 col2를 선택한다.> mkfifo 이후에 우리는 vertica 연결을하고 다음과 같이 복사본을 시작한다. 아래 고양이 mkfifo | vertica에 복사 우리는 vertica의 5 개 노드에서 5 개의 병렬 스레드로이 작업을 수행합니다. –

+0

@ abhishekrastogi는이 일회성 일입니까, 아니면 자주 발생합니까? – Kermit

답변

4

abhi : 이것은 우리를 위해 완벽하게 잘 작동

hive -e "select whatever FROM wherever" | \ 
dd bs=1M | \ 
/opt/vertica/bin/vsql -U $V_USERNAME -w $V_PASSWORD -h $HOST $DB -c \ 
"COPY schema.table FROM LOCAL STDIN DELIMITER E'\t' NULL 'NULL' DIRECT" 

. 하이브와 vsql 사이의 'dd'에 주목하십시오. 제대로 작동하도록하려면 필수입니다. 하이브 선택 문이 실제로 사소하지 않고, 하이브 프로세싱이나 데이터 로딩이 어디에서 발생했는지 알지 못하기 때문에 이것을 사용하는 것이 좋습니다.

하지만 우리가하는 것처럼 명명 된 파이프를 사용하거나 이름없는 파이프를 사용하는 것이 좋은 방법이며 시스템 수준에서 최적화 할 수있는 부분은 많지 않습니다. 당신의 하이브 쿼리 당신이 당신의 쿼리를 실행

  • 을 계산하기

    • 시간 :하지만, 고려에 걸릴 수있는 몇 가지가있다. 예를 들어 타사 시스템에서 실행하면 데이터가 하이브에서 서버로 vertica로 흐르게해야합니다. 하이브 서버 나 Vertica 노드에서 명령을 실행하면 불필요한 홉을 건너 뛸 때 속도가 빨라질 수 있습니다.
    • COPY 문 : 직접 사용합니까?
    • 그리고 당연히, 보통 투상 (다수 투상은 짐을 감속합니다), Vertica 자원 등등.
  • 관련 문제