hive 이전 데이터 이전 및 클 러 스 터 백업

1989 단어
어제 표 구조의 이전 을 이 야 기 했 습 니 다. 셸 과 hiv - e 와 hiv - f 기본 테스트 소 칼 을 결합 하여 완 성 했 습 니 다. 중요 한 것 은 데이터 의 이전 과 클 러 스 터 간 데이터 의 정시 백업 입 니 다.
오늘 은 데이터 이전 을 말 할 때 가장 멍청 한 방법 도 가장 효과 적 입 니 다. 우선 우리 의 시 계 는 파 티 션 표 입 니 다. 예 를 들 어 client 가 있 습 니 다.nmbr batch 두 개의 파 티 션 입 니 다. 우 리 는 A 클 러 스 터 에서 내 보 냅 니 다. B 클 러 스 터 로 가 져 올 때 모두 대량으로 가 져 옵 니 다. 모든 물고기 가 어느 파 티 션 의 재 삽입 인지 검증 할 수 없습니다. 이렇게 효율 이 비교적 낮 기 때문에 우 리 는 A 클 러 스 터 에서 내 보 낼 때 그 가 어느 파 티 션 인지 잘 해 야 합 니 다. 파 티 션 에 따라 단독 파일 을 만들어 야 합 니 다.이렇게 해서 우리 가 B 클 러 스 터 를 가 져 올 때 파일 로 파 티 션 을 대표 하여 대량으로 기록 합 니 다.
또한 나중에 데이터 이전 이 정시 작업 이 되 어 백업 을 해 야 한다 면 우 리 는 전체 백업 이 아니 라 증분 백업 을 해 야 합 니 다. 증 가 를 어떻게 판단 합 니까? 위의 두 필드 를 사용 해도 할 수 없습니다. 그러면 우 리 는 파 티 션 에 어떻게 증 가 를 표시 해 야 하 는 지 고려 해 야 합 니 다. 정 답 은 시간 필드 입 니 다. 만약 에 제 가 3 월 20 일 에 백업 을 한 적 이 있다 면...한 달 에 한 번 백업 하면 저 는 4 월 20 일 에 백업 을 하려 고 할 때 3 월 21 일 에 새로 추 가 된 결 과 를 백업 해 야 합 니 다. 그러면 증 가 량 은 표 시 를 할 수 있 고 공간 과 시간 을 절약 할 수 있 습 니 다.
구체 적 으로 파 티 션 을 통 해 백업 하 는 방법 은 hive 가 우리 에 게 제공 하 는 몇 가지 명령 show tables 를 보십시오.show partitions tablename; 다음은 셸 의 위조 코드 를 볼 수 있다.
#! /bin/bash

ex_dir=export_zip

mkdir ./$ex_dir
for  table in  `hive -e 'use fkdb,show tables'`;do
     dirsub=_data;
     mkdir -p  ./$table$dirsub;
     for  partition in `show partitions $table`;do
#   partition=client_nmbr=AA108/batch=p1
        cli_bat=`echo $partition |grep  -o --color  '[0-9]*'`
        client_nmbr=${cli_bat[0]};
        batch=${cli_bat[1]};
        ex_file=$table$partition
        touch ./$table$dirsub/$ex_file

        hive -e 'select * from $table where client_nmbr=$client_nmbr and  batch=$batch' >> ./$table$dirsub/$ex_file
     zip_extension=.zip
     zip -r ./$ex_dir/$table$dirsub$zip_extension ./$table$dirsub
     


이 셸 스 크 립 트 를 통 해 이 표 파 티 션 의 데이터 파일 을 대량으로 내 보 낼 수 있 습 니 다. 멋 있 지 않 습 니까? 그리고 zip 파일 로 포장 할 수 있 습 니 다.
이후 이 파일 들 을 B 클 러 스 터 에 업로드 하고 파일 이름 의 정규 를 파 티 션 에 일치 시 킨 후 스 크 립 트 for 변 수 를 hiv 창고 에 대량으로 삽입 합 니 다.

좋은 웹페이지 즐겨찾기