[PYTHON] Versuchen Sie, mit Oracle Cloud Infrastructure Data Science auf AWS Redshift-Daten zuzugreifen

Das Ziel dieses Artikels

Im Februar 2020 wurde Oracle Cloud Infrastructure Data Science (OCI-Data Science) veröffentlicht. Beim letzten Mal habe ich versucht, die Daten der Datei in AWS S3 von OCI-Data Science abzufragen ([Qiita-Artikel: Versuchen Sie, mit Oracle Cloud Infrastructure Data Science auf die Dateidaten von OCI Object Storage und AWS S3 zuzugreifen]) ( https://qiita.com/maato/items/691452be9e4a5d63e4f9)) In diesem Artikel möchte ich das Verfahren für den Zugriff auf und die Erfassung von Daten in AWS Redshift mit Python von OCI-Data Science ausführen. ..

Verweise

Links, die für die Implementierung hilfreich sind

Verfahren

Befolgen Sie die nachstehenden Anweisungen.

  1. OCI-Data Science-Einstellungen
  2. Starten Sie Redshift, erstellen Sie eine Tabelle und registrieren Sie die Daten 2-1. Erstellen und starten Sie den Redshift-Cluster 2-2. Erstellen Sie eine Tabelle in Redshift, registrieren Sie Daten in der Tabelle aus einer Datei in S3
  3. Greifen Sie über OCI-Data Science auf Redshift-Tabellen zu

1. OCI-Data Science-Einstellungen

Erstellt und initialisiert die OCI-Data Science-Notebook-Umgebung. Führen Sie die folgenden Schritte unter Bezugnahme auf "Verwenden Sie Oracle Cloud Infrastructure Data Science (OCI-Data Science)" in der obigen Referenz aus.

2. Starten Sie Redshift, erstellen Sie eine Tabelle und registrieren Sie Daten

2-1. Erstellen und starten Sie den Redshift-Cluster

Ich habe einen Redshift-Cluster unter Bezugnahme auf die obige Referenz "Qiita-Artikel: Ich habe Redshift zum ersten Mal ausprobiert!" Erstellt.

2-2. Erstellen Sie eine Tabelle in Redshift, registrieren Sie Daten in der Tabelle aus einer Datei in S3

Dieses Mal ** Erstellen einer IAM-Rolle ** ** unter Bezugnahme auf "Versuchen Sie, Amazon Redshift zu verwenden" unter "Was kann Amazon Redshift tun? Erklären von AWS Data Warehouse-Diensten" in der obigen Referenz. Die Daten wurden registriert, indem die Schritte zum Erstellen einer Tabelle in Redshift **, ** Registrieren von Daten aus einer CSV-Datei in S3 in einer Tabelle in Redshift ** ausgeführt wurden.

Dieses Mal wird die folgende Tabelle erstellt und Beispieldaten registriert.

CREATE TABLE PURCHASE_ITEM (
CUST_ID integer,
AGE integer,
MARRIED VARCHAR(4000),
ADDRESS VARCHAR(4000),
CHILD VARCHAR(4000),
OCCUPATION VARCHAR(4000),
LASTCONTACT VARCHAR(4000),
LASTCALL integer,
CONTACT integer,
CONTACT_BEFORE_CAMPAIGN integer,
Purchased VARCHAR(4000)
);

3. Greifen Sie über OCI-Data Science auf Redshift-Tabellen zu

Lassen Sie uns nun von OCI-Data Science aus auf die Redshift-Tabelle zugreifen. Dieses Mal verwenden wir "sqlalchemy-redshift", wie in der obigen Referenz "Lesen von Daten aus Redshift und Einfügen in den Pandas-Datenrahmen" beschrieben.

Installieren Sie zuerst das Modul ** sqlalchemy-redshift **.

pip install sqlalchemy-redshift

Installieren Sie dann die erforderlichen Bibliotheken.

import redshift_sqlalchemy
from sqlalchemy import create_engine

Stellen Sie eine Verbindung zu Redshift her.

engine = create_engine('{dialect}+{driver}://{user}:{pwd}@{url}:{port}/{db}'.format(
    dialect = 'redshift',
    driver = 'psycopg2',
    user='awsuser', #Redshift-Benutzername
    pwd ='XXXXXX', #Passwort
    url='redshift-cluster-1.XXX.XXX.redshift.amazonaws.com', #Endpunkt des Rotverschiebungsclusterbildschirms
    port=5439, #Redshift-Portnummer
    db='dev' #Name der Redshift-Datenbank
))

Hier ist der folgende Fehler ** Verbindungszeitüberschreitung ** aufgetreten. image.png

Nach der Untersuchung sieht es genauso aus wie das obige Referenzmaterial "Herstellen einer Verbindung zu ubuntu16.04@AWS postgresql von Remote-Python3 (psycopg2)". Stellen Sie daher die Eingangsregel ** VNC-Sicherheitsgruppe ** von Redshift wie folgt ein. Machen. image.png

Nachdem ich die Sicherheitsgruppe festgelegt hatte, konnte ich eine normale Verbindung herstellen.

Lesen Sie die Daten auf Redshift und fügen Sie sie in den Datenrahmen ein.

import pandas as pd
redshift_data = pd.read_sql_query('SELECT * FROM PURCHASE_ITEM limit 100;', engine)

Lassen Sie uns das Ergebnis überprüfen.

redshift_data.head()

image.png

Natürlich konnte ich es sicher bekommen.

Am Ende

Dieses Mal habe ich versucht, mit ** sqlalchemy-redshift ** auf die Daten in AWS Redshift von OCI-Data Science zuzugreifen.

Möglicherweise gibt es eine bessere Verbindungsmethode als diese. Probieren Sie es also aus. (Und sag mir ...)

OCI-Data Science ist ein Zieldienst von Oracle Free Trial, mit dem Sie bis zu 30 Tage lang kostenloses Guthaben für bis zu 300 USD verwenden können. Wir empfehlen Ihnen daher, es auszuprobieren.

Let's Enjoy Data Science!

Recommended Posts

Versuchen Sie, mit Oracle Cloud Infrastructure Data Science auf AWS Redshift-Daten zuzugreifen
Versuchen Sie "100 Schläge auf Data Science" ①
Versuchen Sie es mit AWS SageMaker Studio
Starten Sie Data Science in der Cloud
Versuchen Sie es mit der Datenintegrationsfunktion von scanpy (sc.tl.ingest).
Versuchen Sie, Python mit Google Cloud-Funktionen zu verwenden