Externí schémata, formáty souborů a tabulek

Introduction to Redshift

Jason Myers

Principal Architect

Externí schémata

Komponenty databáze Komponenty databáze

  • Pokud katalog metadat a úložiště nejsou součástí clusteru, považují se za externí

Redshift Spectrum

Externí schémata s Redshift Spectrum

  • Redshift je dotazovací engine
  • Výchozím úložištěm je AWS Glue Data Catalog a AWS S3
Introduction to Redshift

Formáty datových souborů v S3

Formát souboru Sloupcový Podporuje paralelní čtení
Parquet Ano Ano
ORC Ano Ano
TextFile Ne Ne
OpenCSV Ne Ano
JSON Ne Ne
Introduction to Redshift

Vytvoření externí tabulky 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');
Introduction to Redshift

Dotazování tabulek Spectrum

  • Funguje stejně jako dotazy na interní tabulky
  • EXPLAIN bude vypadat jinak
  • Není třeba řešit DISTKEY ani SORTKEY
  • Pseudosloupce
    • $path – cesta k souboru pro daný řádek
    • $size – velikost souboru pro daný řádek
Introduction to Redshift

Použití pseudosloupců

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 
Introduction to Redshift

Formáty tabulek

  • Běžné formáty:

    • Hive
    • Iceberg
    • Hudi
    • Deltalake
  • Pouze pro čtení

  • Některé (např. Hive) vyžadují externí katalog jiný než AWS Glue
Introduction to Redshift

Zobrazení externích schémat

  • SVV_ALL_SCHEMAS – internal nebo external
SELECT schema_name, 
       schema_type
  FROM SVV_ALL_SCHEMAS
 ORDER BY SCHEMA_NAME;
schema_name           | schema_type
======================|=============
public_intro_redshift | internal
spectrumdb            | external
Introduction to Redshift

Zobrazení externích tabulek

  • SVV_ALL_TABLES – TABLE nebo 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
Introduction to Redshift

Pojďme cvičit!

Introduction to Redshift

Preparing Video For Download...