Zewnętrzne schematy, formaty plików i tabel

Wprowadzenie do Redshift

Jason Myers

Principal Architect

Zewnętrzne schematy

Komponenty bazy danych Komponenty bazy danych

  • Jeśli katalog metadanych i magazyn danych nie są częścią klastra, uznaje się je za zewnętrzne

Redshift Spectrum

Zewnętrzne schematy z Redshift Spectrum

  • Redshift pełni rolę silnika
  • Domyślnie używa AWS Glue Data Catalog i AWS S3
Wprowadzenie do Redshift

Formaty plików danych S3

Format pliku Kolumnowy Obsługuje odczyty równoległe
Parquet Tak Tak
ORC Tak Tak
TextFile Nie Nie
OpenCSV Nie Tak
JSON Nie Nie
Wprowadzenie do Redshift

Tworzenie zewnętrznej tabeli 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');
Wprowadzenie do Redshift

Zapytania do tabel Spectrum

  • Działa tak samo jak zapytania do tabel wewnętrznych
  • EXPLAIN zwraca inny wynik
  • Nie dotyczą DISTKEY ani SORTKEY
  • Pseudokolumny
    • $path – ścieżka przechowywania pliku dla wiersza
    • $size – rozmiar pliku dla wiersza
Wprowadzenie do Redshift

Używanie pseudokolumn

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 
Wprowadzenie do Redshift

Formaty tabel

  • Popularne formaty:

    • Hive
    • Iceberg
    • Hudi
    • Deltalake
  • Tylko odczyt

  • Niektóre (np. Hive) wymagają zewnętrznego katalogu innego niż AWS Glue
Wprowadzenie do Redshift

Przeglądanie zewnętrznych schematów

  • SVV_ALL_SCHEMAS - internal lub external
SELECT schema_name, 
       schema_type
  FROM SVV_ALL_SCHEMAS
 ORDER BY SCHEMA_NAME;
schema_name           | schema_type
======================|=============
public_intro_redshift | internal
spectrumdb            | external
Wprowadzenie do Redshift

Przeglądanie zewnętrznych tabel

  • SVV_ALL_TABLES - TABLE lub 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
Wprowadzenie do Redshift

Czas na ćwiczenia!

Wprowadzenie do Redshift

Preparing Video For Download...