Einrichten von AWS Redshift für Cloud Data Warehousing

In diesem Tutorial werde ich erklären und anleiten, wie man AWS Redshift für die Nutzung von Cloud Data Warehousing einrichtet. Redshift ist ein vollständig verwalteter Petabyte-Data-Warehouse-Dienst, der von Amazon Web Services in die Cloud eingeführt wird. Er funktioniert durch die Kombination einer oder mehrerer Sammlungen von Computing-Ressourcen, genannt Knoten, die in einer Gruppe, einem Cluster, organisiert sind. Jeder Cluster führt eine Redshift-Engine aus und kann eine oder mehrere Datenbanken enthalten. Die Architektur kann grundsätzlich wie folgt ausgearbeitet werden:

AWS-Rotverschiebung

1. Wie funktioniert sie?

Im Grunde basiert Redshift auf PostgreSQL als Kern-Engine, so dass die meisten SQL-Anwendungen mit Redshift arbeiten können. Redshift kann außerdem in eine Vielzahl von Anwendungen integriert werden, darunter BI-, Analyse- und ETL-Tools (Extrahieren, Transformieren, Laden), die es Analysten oder Ingenieuren ermöglichen, mit den enthaltenen Daten zu arbeiten.

Wenn ein Benutzer ein Amazon Redshift Data Warehouse einrichtet, verfügt er über eine Kerntopologie für Operationen, die als Cluster bezeichnet wird. Ein Redshift-Cluster besteht aus 1 oder mehreren Rechenknoten. Wenn sich der Benutzer für die Verwendung von mehr als einem Rechenknoten entscheidet, startet Redshift automatisch einen Master-Knoten. Dieser Leitknoten ist für den Empfang von Anfragen und Befehlen von der Client-Ausführungsseite eingerichtet und wird von AWS nicht in Rechnung gestellt.

Client-Anwendungen kommunizieren nur mit dem Leitknoten. Die Berechnungsknoten unter dem Leitknoten sind für den Benutzer transparent. Wenn Clients eine Abfrage ausführen, analysiert der führende Knoten die Abfrage und erstellt einen optimalen Ausführungsplan für die Ausführung auf den Berechnungsknoten, wobei die auf jedem Knoten gespeicherte Datenmenge berücksichtigt wird.

In diesem Tutorial zeige ich Ihnen, wie Sie Redhift für unseren eigenen Gebrauch einrichten und konfigurieren. In diesem Beispiel werde ich ein Konto erstellen und mit dem kostenlosen Tier-Paket beginnen.

2. Konfigurationsphase

2.1 Vorraussetzung

Bevor wir mit der Einrichtung eines Amazon Redshift-Clusters beginnen, muss eine bestimmte Voraussetzung erfüllt sein.

Melden Sie sich zunächst bei AWS an und gehen Sie dann, sobald dies erledigt ist, zum IAM-Dienst, um eine Rolle zu erstellen, die wir für die Nutzung von Redshift verwenden können. Sie können dem untenstehenden Screenshot folgen:

AWS-Verwaltungskonsole

Erstellen einer Rolle

Redshift

Amazon S3-Zugang

Add Tags

Überprüfung der Rolleneinstellungen

Wenn Sie fertig sind, sollten Sie einen Screenshot wie unten angegeben erhalten, der besagt, dass die Rolle erfolgreich erstellt wurde.

Redshift-Benutzer erstellt

2.2 Einrichten der Redshift-Konfiguration

Sobald die Voraussetzungen erfüllt sind, können wir mit der Schaffung eines eigenen Redshift-Clusters beginnen. Suchen Sie im Suchfenster nach Redshift-Funktionen und fahren Sie von dort aus fort. Unten sehen Sie ein Beispiel für einen Screenshot:

Dienste finden

Klicken Sie auf die Schaltfläche Cluster erstellen und fahren Sie mit den erforderlichen Variablen fort. Beachten Sie, dass wir auf der Seite Cluster-Berechtigung unsere zuvor erstellte IAM-Rolle einfügen.

Cluster erstellen

Cluster-Konfiguration

Datenbankeinstellungen und Name

redshift Cluster erfolgreich erstellt

Cluster-Berechtigungen und Übersicht

Wenn Sie damit fertig sind, sollten Sie wie oben beschrieben im Red-Shift-Dashboard landen. Für dieses Tutorial werden wir die Netzwerksicherheitsschicht deaktivieren, indem wir die Sicherheitsgruppe ändern. Gehen Sie dazu zum unteren Ende des Dashboards und fügen Sie den Redshift-Port auf der Registerkarte Eingehend hinzu. Unten sehen Sie ein Beispiel:

Deaktivieren der Netzwerksicherheit

Wenn alles erledigt ist, sollten Sie sehen, dass der neue Cluster, den Sie erstellt haben, nun zur Verfügung steht.

Cluster ist einsatzbereit

3. Testphase

Lassen Sie uns nun versuchen, auf unser Data Warehouse zuzugreifen. Um es auszuprobieren, klicken Sie auf EDITOR auf der linken Seite, fügen Sie die notwendigen Variablen ein und klicken Sie auf Mit Datenbank verbinden

Redshift-Konfiguration testen

Sie sollten auf eine Editor-Seite gebracht werden, nun lassen Sie uns damit beginnen, unser eigenes Prüfschema zu erstellen. Erstellen Sie ein Schema wie unten beschrieben und führen Sie es dann aus.

Redshift-Datenbankschema erstellen

Großartig, lassen Sie uns nun auf der lokalen Client-Seite testen. Dazu müssen Sie entweder eine JDBC- oder ODBC-Verbindung von der Redshift-Seite aus herstellen. Um diese Informationen zu erhalten, klicken Sie auf die Schaltfläche Config im linken Bereich des Dashboards.

Wählen Sie Ihren bevorzugten Verbindungstyp, laden Sie dann die benötigten Bibliotheken herunter und kopieren Sie die URL wie im untenstehenden Beispiel gezeigt:

Verbindungstyp wählen

Öffnen Sie dann eines Ihrer SQL-Client-Tools und geben Sie die benötigten Verbindungsvariablen ein. In unserem Beispiel hier verwenden wir SQL-Client-Tools namens DBeaver, die von hier aus aufgerufen werden können

DBeaver Redshift-Client

Ihre Verbindung sollte wie erwartet erfolgreich sein. Wenn Sie in jedem Fall mit einem Authentifizierungsproblem stolpern, überprüfen Sie Ihre Konfiguration, die Sie unter AWS-Sicherheitsgruppe vorgenommen haben, auf weitere Einzelheiten.

Als nächstes erstellen wir einen Satz von Tabellen unter unserem vorherigen neu erstellten Schema. Unten sehen Sie ein Beispiel für die Tabellenerstellung, die wir in unserem Cluster ausführen werden:

 SET search_path = imdb;

create table users(
userid integer not null distkey sortkey,
username char(8),
firstname varchar(30),
lastname varchar(30),
city varchar(30),
state char(2),
email varchar(100),
phone char(14),
likesports boolean,
liketheatre boolean,
likeconcerts boolean,
likejazz boolean,
likeclassical boolean,
likeopera boolean,
likerock boolean,
likevegas boolean,
likebroadway boolean,
likemusicals boolean);

create table venue(
venueid smallint not null distkey sortkey,
venuename varchar(100),
venuecity varchar(30),
venuestate char(2),
venueseats integer);

create table category(
catid smallint not null distkey sortkey,
catgroup varchar(10),
catname varchar(10),
catdesc varchar(50));

create table date(
dateid smallint not null distkey sortkey,
caldate date not null,
day character(3) not null,
week smallint not null,
month character(5) not null,
qtr character(5) not null,
year smallint not null,
holiday boolean default(‚N‘));

create table event(
eventid integer not null distkey,
venueid smallint not null,
catid smallint not null,
dateid smallint not null sortkey,
eventname varchar(200),
starttime timestamp);

create table listing(
listid integer not null distkey,
sellerid integer not null,
eventid integer not null,
dateid smallint not null sortkey,
numtickets smallint not null,
priceperticket decimal(8,2),
totalprice decimal(8,2),
listtime timestamp);

create table sales(
salesid integer not null,
listid integer not null distkey,
sellerid integer not null,
buyerid integer not null,
eventid integer not null,
dateid smallint not null sortkey,
qtysold smallint not null,
pricepaid decimal(8,2),
commission decimal(8,2),
saletime timestamp);

Das erwartete Ergebnis wird wie unten gezeigt :-

Tabellenschema erstellen

Tabellenschema Teil 2

Als nächstes versuchen wir, Beispieldaten in unser Data Warehouse hochzuladen. Für dieses Beispiel habe ich Beispieldaten in meinen eigenen S3-Eimer hochgeladen und dann das unten stehende Skript verwendet, um die Daten aus der S3-Datei in Redshift zu kopieren.

Daten-Upload von Testdaten

 
copy sales from 's3://shahril-redshift01-abcde/sales_tab.txt' 
iam_role 'arn:aws:iam::325581293405:role/shahril-redshift-s3-ro-role' 
delimiter '\t' timeformat 'MM/DD/YYYY HH:MI:SS' region 'eu-west-1';

copy dates from ’s3://shahril-redshift01-abcde/date2008_pipe.txt‘
iam_role ‚arn:aws:iam::325581293405:role/shahril-redshift-s3-ro-role‘
delimiter ‚|‘ region ‚eu-west-1‘;

 

Wenn Sie beim Laden in irgendeiner Weise über ein Problem stolpern, können Sie aus der Redshift-Wörterbuchtabelle mit dem Namen stl_load_errors wie unten eine Abfrage durchführen, um einen Hinweis auf das Problem zu erhalten.

 select * from stl_load_errors ;

Test-Abfrage

Wenn alles erledigt ist, sollten Sie schließlich in der Lage sein, die Daten mit jeder beliebigen SQL-Funktion zu extrahieren und zu manipulieren. Unten finden Sie einige Beispielskripte von Abfragen, die ich für unser Beispiel verwendet habe.

 
-- Get definition for the sales table. 
SELECT * 
FROM pg_table_def 
WHERE tablename = 'sales';

— Find total sales on each day
SELECT b.caldate days, sum(a.qtysold) FROM sales a, dates b
WHERE a.dateid = b.dateid
group by b.caldate ;

— Find top 10 buyers by quantity.
SELECT firstname, lastname, total_quantity
FROM (SELECT buyerid, sum(qtysold) total_quantity
FROM sales
GROUP BY buyerid
ORDER BY total_quantity desc limit 10) Q, users
WHERE Q.buyerid = userid
ORDER BY Q.total_quantity desc;

— Find events in the 99.9 percentile in terms of all time gross sales.
SELECT eventname, total_price
FROM (SELECT eventid, total_price, ntile(1000) over(order by total_price desc) as percentile
FROM (SELECT eventid, sum(pricepaid) total_price
FROM sales
GROUP BY eventid)) Q, event E
WHERE Q.eventid = E.eventid
AND percentile = 1
ORDER BY total_price desc;

Testergebnis

Daumen hoch! Jetzt haben wir erfolgreich unseren eigenen Redshift-Cluster für die Data-Warehouse-Nutzung eingerichtet. Als Nächstes werden wir uns mit der Kombination vorhandener Daten im Redshift-Cluster mit beliebigen Flat-Files unter Verwendung von Redshift Spectrum beschäftigen.

Das könnte dich auch interessieren …