2017-11-09 1 views
-1

우리의 유스 케이스는 폭이 좁은 테이블 (15 개 필드)이지만 전체 데이터 세트 (수십억 개의 행)에 대한 대형 처리입니다.하이킹 스파크 (마루판 형식)

ENV : 내가 더 나은 성능을 제공하는 기능 조합 궁금 CDH5.8를/행 파일 (마루) 에

  • 스파크 (마루의 형식으로) 하이브 테이블에 2.0

    1. 불꽃을 촉발 특정 제품 및 유스 케이스의 추가 컨텍스트없이
  • +0

    이 알려진 문제와 SparkSQL 하이브 쿼리에 비해 크기 주문을했다 것으로 나타났습니다 스칼라 람다가 SparkSQL 표현식 (스칼라 유형을 직접 사용하고 객체로 왕복하지 않음)보다 느리지 만 대개 한계가 있습니다. Parke는 이미 벡터화를 지원하지만 ORC 벡터화 리더는 기억이 잘 나면 Spark 2.3으로 예정되어 있습니다. 그 외 ... 나는 많은 소시지 문자열처럼 스칼라 portmanteau 표현식이 터무니없는 것을 발견 한 오래된 SQL 사용자이지만, 개인적인 견해 (set-based semantics, baby!) –

    +1

    SparkSQL 행 파일 (마루 또는 ORC) . 행 파일은 무엇을 의미합니까? 오크는 컬럼 오른쪽 저장소입니다. – Achyuth

    답변

    0

    - 나는 두 가지 이유 하이브 테이블에 SparkSql 투표 것 :

    1. databricks가 sparksql에서 다른 최적화를 작성했기 때문에 sparksql이 코어 스파크보다 일반적으로 더 우수합니다. sparksql은 높은 abstaction이며 코드 최적화 기능을 제공합니다 (Project Tungsten에 대해 읽음). 어떤 경우에는 수동으로 작성된 스파크 코어 코드가 더 좋을 지 모르지만 프로그래머가 내부에 대한 깊은 이해를 요구한다. 또한 sparksql은 제한적이며 낮은 수준의 메커니즘을 제어 할 수 없지만 항상 코어 rdd로 작동하도록 대체 할 수 있습니다.

    2. 하이브가 아닌 파일 - 외부 메타 스토어가있는 하이브로 가정합니다. Metastore는 "테이블"의 파티션 정의를 저장합니다 (파일의 일부 디렉토리 일 수 있음). 이것은 좋은 성능을위한 가장 중요한 부분 중 하나입니다. 나는. 파일을 작업 할 때이 정보를로드해야합니다 (시간이 많이 걸릴 수 있습니다 - 예 : s3 목록 작업이 매우 느림). 따라서 메타 스토어를 사용하면이 정보를 간단하고 빠른 방법으로 불러올 수 있습니다.

    0

    여기에는 두 가지 옵션 만 있습니다. Spark on files 또는 Spark on Hive. SparkSQL은 RDD가 아닌 Dataset API를 사용하는 것이 좋습니다

    데이터 세트 스키마를 직접 정의 할 수 있다면 Hive에 대한 추가 홉을 건너 뛰기 때문에 원시 HDFS 파일을 읽는 속도가 빨라집니다 Metastore. 나는 (스파크 1.3) 자신 년 전에 간단한 테스트를했을 때

    , 내가 CSV 파일로 100000 행을 추출하는 것은 빠른 같은 LIMIT

    관련 문제