Files
homework/dmedvedev/4.4.greenplum_external_tables.sql
T
2026-07-30 00:37:12 +05:00

50 lines
2.0 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## Задача 1:
У тебя в Hive есть таблица `sales (id, amount)`
Ты хочешь читать её из Greenplum, **не копируя**.
CREATE EXTERNAL TABLE hive_sales (
id INT,
amount NUMERIC
)
LOCATION ('pxf://hive.sales?PROFILE=hive')
FORMAT 'CUSTOM' (FORMATTER='pxfwritable_import');
Greenplum ↔ PXF ↔ Hive Metastore
│
▼
HDFS файлы (ORC, Parquet...)
### ❓ Вопросы:
1. Где реально хранятся данные?
ЖАННЫЕ ХРАНЯТСЯ В ХРАНИЛИЩЕ HIVE.
2. Можно ли писать обратно в Hive?
ДА, КОНЕЧНО.
3. Что если структура таблицы в Hive изменилась?
В ТАКОМ СЛУЧАЕ ПРИ ЗАПРОСЕ МОГУТ БЫТЬ ОШИБКИ ИЛИ ПУСТЫЕ СТОЛБЦЫ СО ЗНАЧЕНИЯМИ, ТАК КАК GREENPLUM НИКАКИМ ОБРАЗОМ НЕ СМОЖЕТ УСЗНАТЬ КАКИЕ ИЗМЕНЕНИЯ ПРОИЗОШЛИ. ПОЭТОМУ НЕОБХОДИМО ПЕРЕСОЗДАТЬ ВНЕШНЮЮ ТАБЛИЦУ ПУТЕМ УДАЛЕНИЯ И СОЗДАНИЯ.
## Задача 2:
Есть файл `s3://my-data-bucket/orders.parquet`. Нужно читать его как таблицу.
CREATE EXTERNAL TABLE s3_orders (
order_id INT,
amount NUMERIC
)
LOCATION ('pxf://my-data-bucket/orders.parquet?PROFILE=s3')
FORMAT 'CUSTOM' (FORMATTER='parquet');
### 🔍 Визуализация:
Greenplum ↔ PXF ↔ S3
▼
Чтение .parquet
### ❓ Вопросы:
1. Данные копируются в Greenplum?
НЕТ, ДАННЫЕ НЕ КОПИРУЮТСЯ.
2. Что быстрее: EXTERNAL или `CREATE TABLE AS SELECT`?
CREATE TABLE AS SELECT БЫСТРЕЕ, НО МЕНЕЕ ЭФФЕКТИВНЕЕ В ДОЛГУЮ, ТАК КАК РАСХОДУЮТСЯ ОБЪЕМЫ ПАМЯТИ И ДОП МОЩНОСТИ.