added external tables and pet project greenplum
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
## Задача 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 БЫСТРЕЕ, НО МЕНЕЕ ЭФФЕКТИВНЕЕ В ДОЛГУЮ, ТАК КАК РАСХОДУЮТСЯ ОБЪЕМЫ ПАМЯТИ И ДОП МОЩНОСТИ.
|
||||
Reference in New Issue
Block a user