내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Hive의 테이블 형식으로, 테이블의 데이터를 여러 개의 하위 집합(파티션)으로 나누어 각 파티션이 테이블의 특정 열 값에 대응하게 함으로써 쿼리 성능 및 데이터 관리 효율성을 향상시킬 수 있습니다. 분할된 테이블의 각 파티션은 별도의 디렉터리에 저장되며, 파티션은 테이블의 하나 이상의 열을 기반으로 정의됩니다. 분할된 테이블을 사용하는 주요 목적은 쿼리로 검색되는 데이터의 양을 줄여 쿼리 효율성을 높이는 것입니다.
과도한 파티셔닝으로 인해 작은 파일이 많이 생성되어 HDFS 성능과 MapReduce 작업 효율성에 영향을 줄 수 있습니다. 작은 파일 병합 작업은 정기적으로 수행해야 합니다.
- CREATE TABLE customer_data (
- customer_id STRING,
- name STRING,
- age INT,
- email STRING
- )
- PARTITIONED BY (city STRING)
- STORED AS ORC;
-
- select *
- from customer_data;
-
- -- 插入 New York 的数据
- INSERT INTO TABLE customer_data PARTITION (city='New York')
- VALUES
-
- -- 插入 Los Angeles 的数据
- INSERT INTO TABLE customer_data PARTITION (city='Los Angeles')
- VALUES
-
- -- 插入 Chicago 的数据
- INSERT INTO TABLE customer_data PARTITION (city='Chicago')
- VALUES
세 개의 파티션에 해당하는 세 개의 디렉터리가 HDFS에 생성된 것을 볼 수 있습니다. where 조건과 함께 select를 사용하여 쿼리하면 해당 파티션 디렉터리에서 데이터를 직접 찾을 수 있으므로 쿼리로 검색되는 데이터의 양이 줄어들고 성능이 향상됩니다.
SELECT * FROM customer_data WHERE city='New York';
이는 Hive의 또 다른 테이블 유형입니다. 테이블의 데이터를 해시 버킷화하면 특히 조인 및 집계 작업을 수행할 때 쿼리 성능이 더욱 향상될 수 있습니다. 버킷 테이블은 데이터를 고정된 수의 버킷으로 나누고 각 버킷은 별도의 파일에 저장됩니다.
------------------------------------- -버킷테이블의 특징----------------------------------------------- - -------
데이터 분할: 하나 이상의 열의 해시 값을 기반으로 고정된 수의 버킷에 데이터를 배포합니다.
파일 저장: 각 버킷의 데이터는 별도의 파일에 저장됩니다.
균일한 배포: 이상적으로는 데이터가 모든 버킷에 균등하게 배포되어 쿼리 성능이 향상됩니다.
- CREATE TABLE customer_data2 (
- customer_id STRING,
- name STRING,
- age INT,
- email STRING
- )
- CLUSTERED BY (customer_id) INTO 4 BUCKETS
- STORED AS ORC;
- -- 插入数据到分桶表
- --通过这些步骤,我们创建了一个按 customer_id 列进行分桶的 Hive 表 customer_data,并插入了具体的数据。
- INSERT INTO TABLE customer_data2 VALUES
-
- select *
- from customer_data2;
HDFS의 경로를 보면 해당 열의 해시 값에 따라 데이터가 여러 버킷으로 나누어지는 것을 알 수 있습니다.