Зовнішні схеми, формати файлів і таблиць

Вступ до 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...