здесь я даю вам несколько советов по созданию и вставке в таблицы сегментов.
Формирование корзины - это подход для повышения производительности запросов Hive.
Bucketing хранит данные в отдельных файлах, а не в отдельных подкаталогах, таких как разделы. Он делит данные практически случайным образом, а не предсказуемым образом, как разделение. Когда записи вставляются в таблицу с пакетами, Hive вычисляет коды ha sh значений в указанном столбце группирования и использует эти коды ha sh для разделения записей на сегменты. По этой причине группирование иногда называют разделением ha sh. Цель группирования - равномерно распределить записи по заранее определенному количеству сегментов. Группирование может повысить производительность объединений, если все объединенные таблицы объединены в столбец ключа объединения.
Подробнее о объединении см. На странице руководства по языку Hive с описанием таблиц с объединением по адресу https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL+BucketedTables ?.
В качестве примера группирования:
Давайте посмотрим, как мы можем создавать Табличные таблицы в Hive.
Табличные таблицы - это не что иное, как Ха sh Разбиение в обычных базах данных. Нам нужно указать предложение CLUSTERED BY, а также INTO BUCKETS для создания таблицы Bucketed.
CREATE TABLE orders_buck (
order_id INT,
order_date STRING,
order_customer_id INT,
order_status STRING
) CLUSTERED BY (order_id) INTO 8 BUCKETS
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
DESCRIBE FORMATTED orders_buck;
Давайте посмотрим, как мы можем добавлять данные в таблицы Buckted.
Обычно мы используем команду INSERT чтобы получить данные в таблицы с разбивкой, поскольку исходные данные могут не соответствовать критерию нашей таблицы с разбивкой. Если данные находятся в файлах, сначала нам нужно получить данные для этапа, а затем вставить их в таблицу с интервалом. У нас уже есть данные в таблице заказов, давайте использовать их для вставки данных в нашу таблицу с контурами. Для orders_buck hive.enforce.bucketing должно быть установлено значение true.
Вот пример вставки данных в таблицу с контурами из обычного управляемого или внешний стол.
SET hive.enforce.bucketing;
SET hive.enforce.bucketing=true;
INSERT INTO orders_buck
SELECT * FROM orders;
-- check out into the directory of the bucketed table if the
-- number of files is equal to number of buckets
dfs -ls /user/hive/warehouse/training_retail.db/orders_buck;
SELECT * FROM orders_buck TABLESAMPLE(BUCKET 1 OUT OF 2 ON order_id);
-- In my case this query works perfectly well
Надеюсь, это может быть печально,
С уважением.