1

나는 the one mentioned here과 비슷한 상황에 있습니다. 질문에 만족스럽게 대답하지 못했습니다. 게다가, 나는 처리 할 데이터가 적다 (하루 1G 정도).디스크에 저장된 Spark/Parquet 데이터에 데이터 추가

내 상황 : 일정량의 데이터 (~ 500G)가 이미 마루 (동의 한 "저장 형식")로 사용할 수 있으며 정기적 인 증분 업데이트가 제공됩니다. 나중에 ETL 부분과 분석 부분을 처리 할 수 ​​있기를 원합니다. 모든 데이터 때까지 주위에 DIFF 데이터 세트을 유지

  • 저장 추가 모드과 :

    효율적으로 특정 "중간 데이터 제품"에 대한 업데이트를 생산할 수 있도록하기 위해, 나는 세 가지 옵션 참조 제품은 upload_timestamp

  • 이 해부에 각 업데이트를 저장할 여분의 열을 추가, 추가 모드에 저장

  • 을 만든 전자 폴더, 예컨대 :

    data 
    +- part_001 
    | +- various_files.parquet 
    +- part_002 
    | +- various_files.parquet 
    +- ... 
    

    전체 데이터 세트가 read.parquet() 경로로 data/*를 사용하여 읽을 수 있습니다이 방법.

나는 의견이 있습니다도 있기 때문에, 마지막 방법으로 경향이 있어요 (증거?) 파티션의 크기 (예 this SO question 참조) 커지면 모드 문제에 이르게 추가하는.

내 질문 : 거기에 이런 식으로 데이터 집합 구조를 만드는 몇 가지 심각한 단점이 있습니까? 분명히 Spark는 여러 폴더를 읽을 때 "일부"병합/정렬을 수행해야하지만 그 외에는?

저는 Spark 2.1.0을 사용하고 있습니다.

답변

0

네이 년 3은 이전에 트위터와 Lambda Architecture 저자의 진리의 소스이며 아키텍처 본적 모든 데이터를 포함하는 일괄 층에 데이터를 기억 수직 분할하는 과정을 설명한다. 이 마스터 데이터 세트는 변경 불가능하고 추가 전용입니다. 수직 파티션은 데이터를 별도의 폴더로 분류하기위한 훌륭한 이름입니다.

정확히 세 번째 옵션에서 설명하는 내용입니다.

이렇게하면 마스터 데이터 집합에서 수행되는 함수는 계산과 관련된 데이터에만 액세스하므로 성능이 크게 향상됩니다. 이렇게하면 일괄 쿼리와 서빙 계층에서 색인 생성 속도가 훨씬 빨라집니다. 폴더의 이름은 당신에게 달려 있지만 일반적으로 타임 스탬프 구성 요소가 관련되어 있습니다.

람다 아키텍처를 구축하든 아니든간에 수직 파티셔닝을 사용하면 훨씬 효율적으로 분석 할 수 있습니다.

+0

음, 고마워요! 그래도 내 질문에 대답하지 않습니다. 질문은 오히려/is : 폴더 수 ('data /'아래)가 커지면 Spark에 문제가되는 것입니까? –

+0

나는 그 질문에 대답했다. 짧은 대답은 아니오입니다. 위의 긴 대답은 이유를 설명합니다. Spark 팀은 사람들이 많은 양의 데이터를 가지고 있으며이를 설명하고 있음을 알고 있습니다. 수직 파티셔닝 방식은 주어진 이유에 따라 이러한 분석을 최적화하는 데 도움이됩니다. – Vidya

관련 문제