TGViewer
rzv Data Engineering rzv Data Engineering @rzv_de · 3.03K subscribers
Post #132 1.01K
#реклама #вперемешку

Некоторые полезные команды для Hive

Привет! Сегодня я расскажу вам о командах, которыми пользуюсь в Hive почти каждый день.

🔸 Описать создание таблицы, получить её DDL или полезные свойства вроде локации файлов:
DESCRIBE [EXTENDED|FORMATTED] TABLE my_table;
SHOW CREATE TABLE my_table;
SHOW LOCATION TABLE my_table;


🔸 Создание таблицы:
CREATE TABLE `schema.partitioned_user`( `firstname` string, `lastname` string, `address` string, `age` int, `first_login_dttm` timestamp)
PARTITIONED BY ( `country` string, `state` string )
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION 'hdfs://nameservice2/raw_data/schema.db/partitioned_user';


🔸 Переключить таблицу на данные из другой директории:
ALTER TABLE my_table SET LOCATION '/new/hdfs/path';


🔸 Превратить Internal таблицу в External, чтобы можно было её удалить без влияния на данные:
ALTER TABLE my_table SET TBLPROPERTIES('EXTERNAL'='TRUE');


🔸 Обновить метаданные (metastore check) — подтягивает новые партиции из hdfs, которые были добавлены туда на уровне файловой системы, не через Hive. Также обновляет пути до отдельных файлов, если они были переименованы
Важно! Не удаляет партиции, их нужно отдельно дропать через alter ... drop partition :
MSCK REPAIR TABLE my_table;


🔸 Import/export:
EXPORT TABLE my_table TO '/backup/path';
IMPORT TABLE my_table FROM '/backup/path';


🔸 Вставка многих партиций, которые рассчитываются на основе селекта (по умолчанию отключено в настройках Hive):
INSERT INTO TABLE partitioned_user
PARTITION (country, state)
SELECT
firstname ,
lastname ,
address ,
... ,
country ,
state
FROM temp_user;


🔸 Перезапись конкретной партиции в таблице на основе селекта:
INSERT OVERWRITE TABLE partitioned_user
PARTITION (country = 'US', state = 'AL')
SELECT * FROM another_user au
WHERE au.country = 'US' AND au.state = 'AL';


🔸 Также партицию можно вставить в файловую систему в любое место, а потом прицепить к внешней таблице:
ALTER TABLE partitioned_user ADD PARTITION (country = 'US', state = 'CA')
LOCATION '/hive/external/tables/user/country=us/state=ca'


Если хочешь узнать о том, а что такое эти ваши External и Internal таблицы в Hive, читай вторую часть поста на канале дата инженеретта. А если нравится такой стиль изложения, посмотри и другие её посты ;)
Telegram дата инженеретта Работа с таблицами в Hive В Hive есть два типа таблиц: 🔘internal (managed) 🔘external (not managed) Managed означает, что Hive в ответе за тех, кого приручил🌹 😑Internal таблица похожа на обычную таблицу из любой СУБД - она хранит данные и метаданные (в…
  • 🔥 9
More from @rzv_de
  1. Oct 4, 2026Как z-order помогает Iceberg пропускать лишние файлы Представим таблицу с детализацией зво…
  2. Oct 4, 2026photo post
  3. Sep 30, 2026Вышла лаба про CDC конвейер из PostgreSQL через Debezium и Kafka Connect в S3! Как и на др…
  4. Sep 29, 2026Неочевидная причина, по которой может расти WAL в Postgres при использовании Debezium 2/2…
  5. Sep 29, 2026Неочевидная причина, по которой может расти WAL в Postgres при использовании Debezium 1/2…
  6. Sep 29, 2026photo post
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →