## Задача 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 БЫСТРЕЕ, НО МЕНЕЕ ЭФФЕКТИВНЕЕ В ДОЛГУЮ, ТАК КАК РАСХОДУЮТСЯ ОБЪЕМЫ ПАМЯТИ И ДОП МОЩНОСТИ.