복붙노트

[HADOOP] 기본 디렉토리가 변경 될 때 Hive 테이블이 자동으로 업데이트 될 수 있습니까

HADOOP

기본 디렉토리가 변경 될 때 Hive 테이블이 자동으로 업데이트 될 수 있습니까

S3 (또는 HDFS) 디렉토리 위에 Hive 테이블을 빌드하면 다음과 같습니다.

텍스트 파일 위치 's3a : // location / subdir /'으로 저장된 ','로 끝나는 외부 테이블 newtable (이름 문자열) 행 형식으로 구분 된 필드를 만듭니다.

해당 S3 위치에 파일을 추가하면 Hive 테이블이 자동으로 업데이트되지 않습니다. 해당 위치에 새 Hive 테이블을 생성 한 경우에만 새 데이터가 포함됩니다. 새 파일이 기본 디렉토리에 추가 될 때마다 Hive 테이블이 자동으로 해당 데이터를 표시하도록 Hive 테이블을 작성하는 방법이 있습니까 (아마도 파티션 사용)?

해결법

  1. ==============================

    1.HDFS에서 각 파일은 @Dudu Markovitz가 가리키는대로 쿼리 할 때마다 스캔됩니다. HDFS의 파일은 즉시 일관성이 있습니다. S3 파일은 생성 후 즉시 일관성이 있으며 삭제 또는 덮어 쓰기 후에도 일관성이 있습니다. s3 테이블 폴더에 새 파일을 추가하면 Hive 테이블을 쿼리 할 때 즉시 액세스 할 수 있습니다. 파일을 다시 쓰는 경우 S3에서 최종 일관성에 문제가있을 수 있습니다. 파일을 다시 쓰면 즉시 일관성이없고 결국 일관성이 있습니다. http://docs.aws.amazon.com/AmazonS3/latest/dev/Introduction.html#ConsistencyModel을 참조하십시오. 타임 스탬프를 기반으로 새로 생성 된 파티션을 작성하거나 타임 스탬프 또는 일부 runID를 기반으로 새 위치로 테이블을 생성 할 때마다 최종 일관성 문제를 해결하는 방법은 거의 없습니다. 아이디어는 매번 새 파일을 작성하는 것입니다. 또한 이것을보십시오 : https://github.com/andrewgaul/are-we-consistent-yet

    HDFS에서 각 파일은 @Dudu Markovitz가 가리키는대로 쿼리 할 때마다 스캔됩니다. HDFS의 파일은 즉시 일관성이 있습니다. S3 파일은 생성 후 즉시 일관성이 있으며 삭제 또는 덮어 쓰기 후에도 일관성이 있습니다. s3 테이블 폴더에 새 파일을 추가하면 Hive 테이블을 쿼리 할 때 즉시 액세스 할 수 있습니다. 파일을 다시 쓰는 경우 S3에서 최종 일관성에 문제가있을 수 있습니다. 파일을 다시 쓰면 즉시 일관성이없고 결국 일관성이 있습니다. http://docs.aws.amazon.com/AmazonS3/latest/dev/Introduction.html#ConsistencyModel을 참조하십시오. 타임 스탬프를 기반으로 새로 생성 된 파티션을 작성하거나 타임 스탬프 또는 일부 runID를 기반으로 새 위치로 테이블을 생성 할 때마다 최종 일관성 문제를 해결하는 방법은 거의 없습니다. 아이디어는 매번 새 파일을 작성하는 것입니다. 또한 이것을보십시오 : https://github.com/andrewgaul/are-we-consistent-yet

    또한 파일을 추가 한 후 테이블을 쿼리 할 때 통계를 사용하는 데 문제가있을 수 있습니다 (https://stackoverflow.com/a/39914232/2700344 참조).

  2. ==============================

    2.@leftjoin이 말한 모든 것이 정확하고 한 가지 세부 사항이 있습니다 .s3는 리스팅에 즉각적인 일관성을 제공하지 않습니다. 새로운 Blob을 업로드 할 수 있지만 HEAD / GET은이를 반환하지만 상위 경로의 목록 작업에서이를 볼 수 없습니다. 이는 디렉토리를 나열하는 Hive 코드가 데이터를 보지 못할 수 있음을 의미합니다. 고유 한 이름을 사용한다고해서 문제가 해결되는 것은 아니며 파일이 추가 / 제거 될 때 업데이트되는 Dynamo와 같은 일관된 DB 만 사용합니다. 거기에서도 동기화를 유지하기 위해 새로운 것을 추가했습니다 ...

    @leftjoin이 말한 모든 것이 정확하고 한 가지 세부 사항이 있습니다 .s3는 리스팅에 즉각적인 일관성을 제공하지 않습니다. 새로운 Blob을 업로드 할 수 있지만 HEAD / GET은이를 반환하지만 상위 경로의 목록 작업에서이를 볼 수 없습니다. 이는 디렉토리를 나열하는 Hive 코드가 데이터를 보지 못할 수 있음을 의미합니다. 고유 한 이름을 사용한다고해서 문제가 해결되는 것은 아니며 파일이 추가 / 제거 될 때 업데이트되는 Dynamo와 같은 일관된 DB 만 사용합니다. 거기에서도 동기화를 유지하기 위해 새로운 것을 추가했습니다 ...

  3. from https://stackoverflow.com/questions/42676499/can-hive-table-automatically-update-when-underlying-directory-is-changed by cc-by-sa and MIT license