Hive 쿼리: 정렬 기준, 그룹화 기준, 배포 기준, 클러스터 기준 예

Hive는 ETL 목적에 맞는 SQL 유형의 쿼리 언어를 제공합니다. 하둡 파일 시스템.

Hive 쿼리 언어(HiveQL)는 Hive에서 테이블, 데이터베이스, 쿼리 작업을 위한 SQL 유형 환경을 제공합니다.

다양한 유형의 데이터 조작 및 쿼리를 수행하기 위해 Hive와 관련된 다양한 유형의 조항을 가질 수 있습니다. 환경 외부의 다른 노드와의 더 나은 연결을 위해. HIVE는 JDBC 연결도 제공합니다.

Hive 쿼리는 다음을 제공합니다.wing 풍모:

  • 데이터베이스, 테이블 생성 등 데이터 모델링
  • 추출, 변환, 테이블에 데이터 로드 등의 ETL 기능
  • 조인 서로 다른 데이터 테이블을 병합하려면
  • 간편한 코드를 위한 사용자별 맞춤 스크립트
  • Hadoop 기반의 더 빠른 쿼리 도구

Hive에서 테이블 생성

이 튜토리얼의 주요 주제를 시작하기 전에 먼저 팔로우에 대한 참조로 사용할 테이블을 만듭니다.wing 튜토리얼.

이 튜토리얼에서는 6개의 열이 있는 "employees_guru" 테이블을 생성하겠습니다.

Hive에서 테이블 생성

위의 스크린샷에서,

  1. “guru” 조직에 속한 직원에 속하는 Id, Name, Age, Address, Salary, Department 등 6개의 열 값을 갖는 “employees_guru” 테이블을 생성합니다.
  2. 이 단계에서는 Employees_guru 테이블에 데이터를 로드합니다. 로드할 데이터는 Employees.txt 파일 아래에 배치됩니다.

쿼리순으로 정렬

HiveQL의 ORDER BY 구문은 HiveQL의 ORDER BY 구문과 유사합니다. SQL 언어.

Order by는 "SELECT" 문과 함께 사용하는 절입니다. 하이브 쿼리, 데이터 정렬에 도움이 됩니다. Order by 절은 Order by에 언급된 특정 열 값을 정렬하기 위해 Hive 테이블의 열을 사용합니다. order by 절을 정의하는 열 이름이 무엇이든 쿼리는 특정 열 값을 오름차순 또는 내림차순으로 결과를 선택하고 표시합니다.

언급된 order by 필드가 문자열인 경우 사전순으로 결과가 표시됩니다. 백엔드에서는 단일 감속기로 전달되어야 합니다.

쿼리순으로 정렬

위의 스크린샷을 통해 다음과 같은 내용을 관찰할 수 있습니다.wing

  1. ORDER BY 열 이름으로 정의된 부서와 함께 ORDER BY 절을 사용하여 “employees_guru” 테이블에 대해 수행하는 쿼리입니다. “Department”는 문자열이므로 사전순으로 결과를 표시합니다.
  2. 이는 쿼리의 실제 출력입니다. 제대로 관찰해보면, orderQuery를 수행하기 위해 ADMIN, Finance 등 부서 컬럼을 기준으로 결과가 출력되는 것을 확인할 수 있다.

쿼리 :

SELECT * FROM employees_guru ORDER BY Department;

쿼리별로 그룹화

Group by 절은 그룹 기준으로 언급된 특정 열 값을 그룹화하기 위해 Hive 테이블의 열을 사용합니다. "groupby" 절을 정의하는 열 이름이 무엇이든 쿼리는 특정 열 값을 그룹화하여 결과를 선택하고 표시합니다.

예를 들어, 아래 스크린샷에서는 각 부서에 있는 총 직원 수를 표시합니다. 여기에는 값별 그룹으로 "부서"가 있습니다.

쿼리별로 그룹화

위의 스크린샷에서 우리는 다음과 같은 내용을 관찰할 것입니다wing

  1. GROUP BY 열 이름이 정의된 부서와 GROUP BY 절이 있는 "employees_guru" 테이블에 대해 수행되는 쿼리입니다.
  2. 출력 쇼wing 여기에 부서 이름이 있으며 직원 수는 서로 다른 부서에 속합니다. 여기에서는 특정 부서에 속한 모든 직원이 그룹화되어 결과에 표시됩니다. 따라서 결과는 각 부서에 있는 총 직원 수를 포함하는 부서 이름입니다.

검색어 :

SELECT Department, count(*) FROM employees_guru GROUP BY Department;

정렬 기준

Sort by 절은 Hive 테이블의 열 이름에 대해 수행되어 출력을 정렬합니다. 내림차순으로 정렬하려면 DESC를 언급하고, 정렬의 오름차순으로 정렬하려면 ASC를 언급할 수 있습니다.

이 정렬에서는 감속기에 공급하기 전에 행을 정렬합니다. 항상 정렬 기준은 열 유형에 따라 다릅니다.

예를 들어, 열 유형이 숫자인 경우 열 유형이 문자열인 경우 사전순으로 정렬됩니다.

정렬 기준

위의 스크린샷에서 우리는 follo를 관찰할 수 있습니다.wing:

  1. SORT BY 컬럼 이름을 정의하여 "id"를 갖는 SORT BY 절을 사용하여 "employees_guru" 테이블에 대해 수행하는 쿼리입니다. DESC라는 키워드를 사용했습니다.
  2. 따라서 표시되는 출력은 "id"의 내림차순으로 표시됩니다.

검색어 :

SELECT * from employees_guru SORT BY Id DESC;

클러스터 기준

Cluster By는 Hive-QL의 Distribute BY 및 Sort BY 절에 대한 대안으로 사용됩니다.

Hive에 있는 테이블에 사용되는 Cluster BY 절입니다. Hive는 Cluster by의 열을 사용하여 리듀서 간에 행을 배포합니다. Cluster BY 열은 여러 감속기로 이동합니다.

  • 여러 감속기에 있는 값의 정렬 순서를 보장합니다.

예를 들어, Employees_guru 테이블의 Id 열 이름에 언급된 Cluster By 절입니다. 이 쿼리를 실행할 때의 출력은 백엔드에 있는 여러 감속기에 결과를 제공합니다. 그러나 프런트 엔드에서는 Sort By와 Distribute By 모두에 대한 대체 조항입니다.

이것은 Map Reduce 프레임워크 측면에서 정렬 기준, 그룹 기준, 클러스터 기준으로 쿼리를 수행할 때 실제로 백엔드 프로세스입니다. 따라서 결과를 여러 감속기에 저장하려면 Cluster By를 사용합니다.

클러스터 기준

위의 스크린샷에서 우리는 follo를 얻고 있습니다.wing 관찰:

  1. Id 필드 값에 대해 CLUSTER BY 절을 수행하는 쿼리입니다. 여기서는 ID 값에 대한 정렬을 가져옵니다.
  2. guru_employees 정렬에 있는 ID와 이름을 다음과 같이 표시합니다.

검색어 :

SELECT  Id, Name from employees_guru CLUSTER BY Id;

배포 기준

Hive에 있는 테이블에 사용되는 BY 절을 배포합니다. Hive는 배포 기준의 열을 사용하여 리듀서 간에 행을 배포합니다. 모든 Distribute BY 열은 동일한 감속기로 이동합니다.

  • N개의 감속기 각각이 겹치지 않는 열 범위를 얻도록 보장합니다.
  • 각 감속기의 출력을 정렬하지 않습니다.

배포 기준

위의 스크린샷에서 우리는 다음과 같은 내용을 관찰할 수 있습니다.wing

  1. "empoloyees_guru" 테이블의 ID에 대해 수행되는 DISTRIBUTE BY 절
  2. 출력 쇼wing 아이디, 이름. 백엔드에서는 동일한 감속기로 이동합니다.

검색어 :

SELECT  Id, Name from employees_guru DISTRIBUTE BY Id;