моя контактная информация
Почтамезофия@protonmail.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 были созданы три каталога, соответствующие трем разделам. Использование выбора с условиями запроса позволяет напрямую найти данные из соответствующих каталогов разделов, тем самым уменьшая объем данных, сканируемых запросом, и повышая производительность.
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, мы видим, что данные будут разделены на разные сегменты в соответствии с хеш-значением соответствующего столбца.