Files
homework/dmedvedev/4.4.greenplum_external_tables.sql
Dmitry Medvedev 297df348c1 fixed mistakes
2026-08-05 23:51:40 +05:00

52 lines
2.5 KiB
SQL
Raw Permalink 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`?
ВСЕ ЗАВИСИТ ОТ ЦЕЛЕЙ.
ДЛЯ РАЗОВОГО ИСПОЛЬЗОВАНИЯ МОЖНО ВЫБРАТЬ EXTERNAL, СОЗДАНИЕ ТАБЛИЦЫ БУДЕТ ПРАКТИЧЕСКИЕ МОМЕНТАЛЬНЫМ ПОТОМУ ЧТО СОЗДАЕТСЯ ПРОСТО ССЫЛКА НА ТАБЛИЦУ, А ВОТ ЧТЕНИЕ БУДЕТ НЕ ОЧЕНЬ ЭФФЕКТИВНЫМ.
ДЛЯ МНОГОКРАТНОГО ИСПОЛЬЗОВАНИЯ ЛУЧШЕ ВЫБРАТЬ CTAS, ХОТЬ МЫ И ДОЛГО КОПИРУЕМ (СОЗДАЕМ) ТАБЛИЦУ, ЗАТО ПОСЛЕДУЮЩИЕ ЧАСТЫЕ ОБРАЩЕНИЯ БУДУТ ПРОИСХОДИТЬ ГОРАЗДО БЫСТРЕЕ ЧЕМ ПРИ EXTERNAL.