복붙노트

[HADOOP] 쪽모이 세공의 장점과 단점은 다른 형식에 비해 무엇입니까?

HADOOP

쪽모이 세공의 장점과 단점은 다른 형식에 비해 무엇입니까?

Apache Parquet의 특징은 다음과 같습니다.

Avro, Sequence Files, RC File 등과 비교하면 형식에 대한 개요를 원합니다. 임팔라가 Hadoop 파일 포맷과 어떻게 작동하는지에 대해서는 포맷에 대한 통찰력을 제공하지만, 데이터에 대한 액세스 및 데이터 저장이 이러한 포맷에서 어떻게 수행되는지 알고 싶습니다. 쪽모이도는 다른 것들보다 어떤 이점이 있습니까?

해결법

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

    1.필자가 설명 할 수있는 주요 차이점은 레코드 지향형과 열 기반 형을 관련 있다고 생각합니다. 레코드 지향 형식은 텍스트 파일, CSV, TSV와 같은 구분 된 형식과 같이 모두 익숙한 형식입니다. AVRO는 시간이 지남에 따라 스키마를 변경할 수 있기 때문에 AVRO는 그보다 약간 더 춥습니다. 레코드에서 열을 추가하거나 제거합니다. 다양한 포맷의 다른 트릭 (특히 압축 포함)은 포맷을 분할 할 수 있는지 여부를 포함합니다. 즉, 데이터 세트의 어느 곳에서나 레코드 블록을 읽을 수 있으며 여전히 스키마인지 알 수 있습니까? 그러나 여기에는 마루와 같은 기둥 형식에 대한 자세한 내용이 있습니다.

    필자가 설명 할 수있는 주요 차이점은 레코드 지향형과 열 기반 형을 관련 있다고 생각합니다. 레코드 지향 형식은 텍스트 파일, CSV, TSV와 같은 구분 된 형식과 같이 모두 익숙한 형식입니다. AVRO는 시간이 지남에 따라 스키마를 변경할 수 있기 때문에 AVRO는 그보다 약간 더 춥습니다. 레코드에서 열을 추가하거나 제거합니다. 다양한 포맷의 다른 트릭 (특히 압축 포함)은 포맷을 분할 할 수 있는지 여부를 포함합니다. 즉, 데이터 세트의 어느 곳에서나 레코드 블록을 읽을 수 있으며 여전히 스키마인지 알 수 있습니까? 그러나 여기에는 마루와 같은 기둥 형식에 대한 자세한 내용이 있습니다.

    마루 및 기타 기둥 형식은 일반적인 하둡 상황을 매우 효율적으로 처리합니다. 잘 설계된 관계형 데이터베이스에서 예상하는 것보다 많은 열을 갖는 테이블 (데이터 세트)을 갖는 것이 일반적입니다. 백 또는 열 두 개가 특이한 것은 아닙니다. 이것은 우리가 종종 관계형 포맷의 데이터를 비정규 화하는 장소로서 Hadoop을 사용하기 때문입니다. 예, 많은 반복 된 값을 가지며 많은 테이블이 모두 하나의 테이블로 통합됩니다. 그러나 모든 조인이 처리되었으므로 쿼리가 훨씬 쉬워집니다. 정시 데이터 보관과 같은 다른 이점이 있습니다. 어쨌든 테이블에 기둥이 가득한 것이 일반적입니다.

    132 개의 열이 있다고 가정 해 봅시다. 그 중 일부는 실제로 긴 텍스트 필드이고 각 열은 서로 뒤 따르며 레코드 당 10K를 사용합니다.

    SQL 관점에서는 이러한 테이블을 쿼리하는 것이 쉽지만 일반적으로 몇 백 개의 열만을 기반으로 일부 레코드 범위를 얻고 자 할 때가 많습니다. 예를 들어, 매출이 $ 500 이상인 고객의 경우 2 월과 3 월의 모든 레코드를 원할 수 있습니다.

    이를 행 형식으로 수행하려면 쿼리가 데이터 집합의 모든 레코드를 검색해야합니다. 첫 번째 행을 읽고 필드 (열)로 레코드를 구문 분석하고 날짜 및 판매 열을 가져온 다음 조건에 맞으면 결과에 포함하십시오. 반복. 10 년 (120 개월)의 역사가 있다면, 그 달 중 2 개월을 찾기 위해 모든 단일 기록을 읽는 것입니다. 물론 이것은 1 년 및 1 개월에 파티션을 사용할 수있는 좋은 기회이지만 그렇다고하더라도 고객의 매출이 $ 500 이상인지 여부를 확인하기 위해 두 달 동안 각 레코드 / 행의 10K를 읽고 파싱하는 것입니다.

    칼럼 형식으로 레코드의 각 열 (필드)은 그 종류의 다른 열과 함께 저장되며 디스크의 여러 블록에 걸쳐 분산되어 있습니다. 한 해 동안의 열, 함께 한 달의 열, 고객 직원 안내서 (또는 기타 긴 텍스트), 그리고 그 모든 레코드를 디스크상의 자신의 별도 위치에있는 거대한 모든 레코드와 물론 판매를위한 컬럼으로 구성합니다. 글쎄, 날짜와 달은 숫자이고 판매도 마찬가지다. 단지 몇 바이트에 지나지 않는다. 쿼리와 일치하는 레코드를 확인하기 위해 각 레코드에 대해 단지 몇 바이트를 읽어야 만한다면 좋지 않을까요? 구조에 대한 칼럼 스토리지!

    파티션이 없어도 우리 쿼리를 만족시키는 데 필요한 작은 필드를 스캔하는 것은 초고속입니다. 모든 레코드가 순서대로 정렬되어 있으며 동일한 크기이므로 디스크는 포함 된 레코드를 훨씬 더 적은 데이터 검사로 탐색합니다. 직원 핸드북 및 기타 긴 텍스트 필드를 읽을 필요가 없습니다. 단지 무시하십시오. 따라서 행 대신에 열을 그룹화하여 거의 항상 적은 데이터를 스캔 할 수 있습니다. 승리!

    그러나 잠깐, 더 좋아진다. 질의가 그 값들과 몇 가지 (단지 132 개의 열 중 10 개를 말하자)를 알 필요가 있고 그 직원 핸드북 열에 대해 신경 쓰지 않았다면 일단 반환 할 올바른 레코드를 선택했으면 지금해야 할 것입니다 결과를 렌더링하는 데 필요한 10 개의 열로 돌아가서 데이터 세트에서 132 개의 122 개를 무시했습니다. 다시, 우리는 많은 독서를 건너 뜁니다.

    (참고 : 이런 이유로, 컬럼 형식은 직선 변환을 수행 할 때 비참한 선택입니다. 예를 들어 두 테이블 모두를 새 테이블로 저장하는 하나의 큰 (게) 결과 세트로 결합하는 경우 소스 어쨌든 완전히 스캔 될 것이므로 읽기 성능에는 별다른 이점이 없으며 기둥 형식은 유사한 행 형식보다 많은 메모리를 사용하는 위치에 대해 더 많이 기억해야하기 때문에.

    원주의 또 다른 이점 : 데이터가 분산되어 있습니다. 하나의 레코드를 얻으려면 132 명의 작업자가 132 개의 데이터 블록에서 132 개의 서로 다른 위치로 /에서 데이터를 읽고 쓰도록 할 수 있습니다. 예, 병렬 처리를 위해!

    그리고 이제 클린 처 (clincher) : 압축 알고리즘은 반복되는 패턴을 찾을 수있을 때 훨씬 잘 작동합니다. 2A6B16C로 AABBBBBBCCCCCCCCCCCCCCCC를 압축 할 수 있지만 ABCABCBCBCCCCCCCCCCCCCCCC는 작게는되지 않습니다 (실제로는이 경우에는 그렇지만 신뢰합니다 :-)). 다시 한번, 적은 독서. 그리고 글쓰기도.

    따라서 우리는 공통 쿼리에 대한 응답 데이터를 훨씬 적게 읽었습니다. 병렬로 읽고 쓰는 것이 더 빠를 수 있으며 압축은 훨씬 잘 작동하는 경향이 있습니다.

    Columnar는 입력면이 크고 출력이 필터링 된 하위 집합 일 때 유용합니다. 크고 작은 것이 좋습니다. 입력과 출력이 거의 같을 때 유용하지 않습니다.

    그러나 우리의 경우 임팔라는 5, 10, 20 또는 30 분에 실행 된 오래된 Hive 쿼리를 가져 와서 몇 초에서 1 분 이내에 완료했습니다.

    희망이 적어도 귀하의 질문에 대답하는 데 도움이!

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

    2.Avro는 Hadoop의 행 기반 저장 형식입니다.

    Avro는 Hadoop의 행 기반 저장 형식입니다.

    Parquet은 Hadoop의 열 기반 저장 형식입니다.

    유스 케이스가 일반적으로 각 쿼리의 행에있는 모든 필드를 검색하거나 가져 오는 경우 일반적으로 Avro가 최선의 선택입니다.

    데이터 세트에 많은 열이 있고 유스 케이스가 일반적으로 전체 레코드가 아닌 해당 열의 하위 세트로 작업하는 경우 Parke는 이러한 종류의 작업에 최적화되어 있습니다.

    출처

  3. ==============================

    3.Tom의 답변은 매우 자세하고 철저합니다. 그러나 여기에 요약 된 Allstate Insurance에서 수행 한 Parquet 대 Avro에 대한 간단한 연구에 관심이있을 수도 있습니다.

    Tom의 답변은 매우 자세하고 철저합니다. 그러나 여기에 요약 된 Allstate Insurance에서 수행 한 Parquet 대 Avro에 대한 간단한 연구에 관심이있을 수도 있습니다.

    "전반적으로 Parquet은 Avro보다 모든 테스트에서 유사하거나 더 나은 결과를 보여주었습니다 .Purquet의 장점 인 큰 데이터 세트의 쿼리 성능 차이는 부분적으로 압축 결과로 인한 것이며, 넓은 데이터 세트를 쿼리 할 때 Spark는 3.5x Avro는 Avro보다 Parquet에 대한 데이터가 적다. Avro는 전체 데이터 세트를 처리 할 때 잘 수행되지 않았다.

  4. from https://stackoverflow.com/questions/36822224/what-are-the-pros-and-cons-of-parquet-format-compared-to-other-formats by cc-by-sa and MIT license