Apache Hive 호환성

적용 대상:check marked yes Databricks 런타임

Azure Databricks의 Apache Spark SQL은 메타스토어 연결, SerDes, UDF를 포함하여 Apache Hive와 호환되도록 설계되었습니다.

SerDes 및 UDF

Hive SerDes와 UDF는 Hive 1.2.1을 기반으로 합니다.

메타스토어 연결

외부에 호스트된 Hive 메타스토어에 Azure Databricks를 연결하는 방법에 대한 자세한 내용은 외부 Apache Hive 메타스토어(레거시)를 참조하세요.

지원되는 Hive 기능

Spark SQL은 다음을 포함하여 대부분의 Hive 기능을 지원합니다.

  • 다음을 포함한 Hive 쿼리 문:
    • SELECT
    • GROUP BY
    • ORDER BY
    • CLUSTER BY
    • SORT BY
  • 다음을 포함한 모든 Hive 식:
    • 관계식(=,, ,==, <>, <>, >=, <= 등)
    • 산술 식(+, -, *, /, % 등)
    • 논리 식(AND, &&, OR, ||등)
    • 복합 형식 생성자
    • 수학 식(sign, ln, cos 등)
    • 문자열 식(instr, length, printf 등)
  • UDF(사용자 정의 함수)
  • UDAF(사용자 정의 집계 함수)
  • SerDes(사용자 정의 직렬화 형식)
  • 창 함수
  • 조인
    • JOIN
    • {LEFT|RIGHT|FULL} OUTER JOIN
    • LEFT SEMI JOIN
    • CROSS JOIN
  • Unions
  • 하위 쿼리
    • SELECT col FROM ( SELECT a + b AS col from t1) t2
  • 샘플링
  • Explain
  • 동적 파티션 삽입을 포함하는 분할된 테이블
  • 보기
  • 다음을 포함한 대부분의 DDL 문:
    • CREATE TABLE
    • CREATE TABLE AS SELECT
    • ALTER TABLE
  • 다음을 포함한 대부분의 Hive 데이터 형식:
    • TINYINT
    • SMALLINT
    • INT
    • BIGINT
    • BOOLEAN
    • FLOAT
    • DOUBLE
    • STRING
    • BINARY
    • timestamp
    • DATE
    • ARRAY<>
    • 지도<>
    • STRUCT<>

지원되지 않는 Hive 기능

다음 섹션에는 Spark SQL에서 지원하지 않는 Hive 기능 목록이 포함되어 있습니다. 이러한 기능의 대부분은 Hive 배포에서 거의 사용되지 않습니다.

주요 Hive 기능

  • Hive에서 만든 버킷 테이블에 쓰기
  • ACID 세분화된 업데이트

난해한 Hive 기능

  • 공용 구조체 형식
  • 고유 조인
  • 열 통계 수집: Spark SQL은 현재 열 통계를 수집하기 위해 피기백 검사를 수행하지 않으며, Hive 메타스토어의 sizeInBytes 필드 채우기만 지원합니다.

Hive 입력 및 출력 양식

  • CLI용 파일 형식: CLI에 다시 표시되는 결과에 대해 Spark SQL은 TextOutputFormat만 지원합니다.
  • Hadoop 보관

Hive 최적화

소수의 Hive 최적화는 Spark에 포함되어 있지 않습니다. 이 중에서 일부(예: 인덱스)는 Spark SQL의 메모리 내 계산 모델 때문에 덜 중요합니다.

  • 블록 수준 비트맵 인덱스 및 가상 열(인덱스 빌드에 사용됨).
  • 자동으로 조인 및 groupby의 Reducer 수 결정: Spark SQL에서 SET spark.sql.shuffle.partitions=[num_tasks];를 사용하여 순서 섞기 후 병렬 처리 수준을 제어해야 합니다.
  • 데이터 기울이기 플래그: Spark SQL은 Hive의 데이터 기울이기 플래그를 따르지 않습니다.
  • 조인의 STREAMTABLE 힌트: Spark SQL은 STREAMTABLE 힌트를 따르지 않습니다.
  • 쿼리 결과를 위해 여러 개의 작은 파일 병합: 결과 출력에 여러 개의 작은 파일이 포함된 경우 Hive는 필요에 따라 작은 파일을 더 적은 개수의 큰 파일로 병합하여 HDFS 메타데이터가 오버플로되는 것을 방지할 수 있습니다. Spark SQL은 이 기능을 지원하지 않습니다.