Внешние схемы, форматы файлов и таблиц

Введение в Redshift

Jason Myers

Principal Architect

Внешние схемы

Компоненты базы данных Компоненты базы данных

  • Если каталог метаданных и хранилище находятся за пределами кластера, они считаются внешними

Redshift Spectrum

Внешние схемы с Redshift Spectrum

  • Redshift выступает в роли движка
  • По умолчанию использует AWS Glue Data Catalog и хранилище AWS S3
Введение в Redshift

Форматы файлов данных S3

Формат файла Столбчатый Параллельное чтение
Parquet Да Да
ORC Да Да
TextFile Нет Нет
OpenCSV Нет Да
JSON Нет Нет
Введение в Redshift

Создание внешней таблицы CSV

CREATE TABLE spectrumdb.IDAHO_SITE_ID
(
    'pk_siteid' INTEGER PRIMARY KEY,
    -- Cutting the rest of columns for space
)

-- CSV rows are comma delimited ROW FORMAT DELIMITED
-- CSV fields are terminated by a comma FIELDS TERMINATED BY ','
-- CSVs are a type of text file STORED AS TEXTFILE
-- This is where the data is in AWS S3 LOCATION 's3://spectrum-id/idaho_sites/'
-- This file has headers that we want to skip TABLE PROPERTIES ('skip.header.line.count'='1');
Введение в Redshift

Запросы к таблицам Spectrum

  • Работает так же, как запросы к внутренним таблицам
  • Вывод EXPLAIN будет отличаться
  • DISTKEY и SORTKEY не нужны
  • Псевдостолбцы
    • $path — путь к файлу хранилища для строки
    • $size — размер файла для строки
Введение в Redshift

Использование псевдостолбцов

SELECT "$path", 
       "$size",
       pk_siteid
  FROM spectrumdb.idaho_site_id;
$path                           | $size | pk_siteid
================================|=======|==========
's3://spectrum-id/idaho_sites/' | 1616  | 1 
's3://spectrum-id/idaho_sites/' | 1616  | 2 
's3://spectrum-id/idaho_sites/' | 1616  | 3 
Введение в Redshift

Форматы таблиц

  • Распространённые форматы:

    • Hive
    • Iceberg
    • Hudi
    • Deltalake
  • Только чтение

  • Некоторые форматы, например Hive, требуют внешнего каталога, отличного от AWS Glue
Введение в Redshift

Просмотр внешних схем

  • SVV_ALL_SCHEMAS — internal или external
SELECT schema_name, 
       schema_type
  FROM SVV_ALL_SCHEMAS
 ORDER BY SCHEMA_NAME;
schema_name           | schema_type
======================|=============
public_intro_redshift | internal
spectrumdb            | external
Введение в Redshift

Просмотр внешних таблиц

  • SVV_ALL_TABLES — TABLE или EXTERNAL TABLE
SELECT table_name, 
       table_type
  FROM SVV_ALL_TABLES
 WHERE schema_name = 'public_intro_redshift';
table_name                | table_type
==========================|================
coffee_county_weather     | TABLE
idaho_monitoring_location | TABLE
idaho_samples             | TABLE
ecommerce_sales           | EXTERNAL_TABLE
Введение в Redshift

Давайте потренируемся!

Введение в Redshift

Preparing Video For Download...