[PYTHON] Essayez d'accéder aux données AWS Redshift à l'aide d'Oracle Cloud Infrastructure Data Science

Le but de cet article

En février 2020, Oracle Cloud Infrastructure Data Science (OCI-Data Science) a été publié. La dernière fois, j'ai essayé d'interroger les données du fichier sur AWS S3 à partir d'OCI-Data Science (article Qiita: Essayez d'accéder aux données de fichier d'OCI Object Storage et AWS S3 à l'aide d'Oracle Cloud Infrastructure Data Science) Dans cet article, je souhaite implémenter la procédure d'accès et d'acquisition de données sur AWS Redshift à l'aide de Python d'OCI-Data Science. ..

Les références

Liens qui seront utiles pour la mise en œuvre

procédure

Suivez la procédure ci-dessous.

  1. Paramètres OCI-Data Science
  2. Démarrez Redshift, créez une table, enregistrez des données 2-1. Créer et démarrer le cluster Redshift 2-2. Créer une table dans Redshift, enregistrer des données dans la table à partir d'un fichier dans S3
  3. Accéder aux tables Redshift depuis OCI-Data Science

1. Paramètres OCI-Data Science

Construit et initialise l'environnement du notebook OCI-Data Science. Procédez comme suit en faisant référence à "Utilisons Oracle Cloud Infrastructure Data Science (OCI-Data Science)" dans la référence ci-dessus.

-Après les paramètres de base d'Oracle Cloud, créez un environnement de notebook. -Utilisez ** getting-started.ipynb ** pour effectuer le travail initial de l'environnement du notebook (JupyerLab).

2. Démarrez Redshift, créez une table et enregistrez les données

2-1. Créer et démarrer le cluster Redshift

J'ai créé un cluster Redshift en me référant à la référence ci-dessus "Article Qiita: j'ai essayé Redshift pour la première fois!".

2-2. Créer une table dans Redshift, enregistrer des données dans la table à partir d'un fichier dans S3

Cette fois, reportez-vous à «Essayer d'utiliser Amazon Redshift» dans «Que peut faire Amazon Redshift? Expliquer le service d'entrepôt de données AWS» dans la référence ci-dessus, ** Création d'un rôle IAM **, ** Les données ont été enregistrées en suivant les étapes de Création d'une table sur Redshift **, ** Enregistrement des données d'un fichier csv sur S3 dans une table sur Redshift **.

Cette fois, le tableau suivant est créé et des exemples de données sont enregistrés.

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. Accéder aux tables Redshift depuis OCI-Data Science

Maintenant, accédons réellement à la table Redshift depuis OCI-Data Science. Cette fois, nous utiliserons sqlalchemy-redshift comme décrit dans la référence ci-dessus" Lire les données de Redshift et les mettre dans la trame de données pandas ".

Tout d'abord, installez le module ** sqlalchemy-redshift **.

pip install sqlalchemy-redshift

Ensuite, installez les bibliothèques requises.

import redshift_sqlalchemy
from sqlalchemy import create_engine

Connectez-vous à Redshift.

engine = create_engine('{dialect}+{driver}://{user}:{pwd}@{url}:{port}/{db}'.format(
    dialect = 'redshift',
    driver = 'psycopg2',
    user='awsuser', #Nom d'utilisateur Redshift
    pwd ='XXXXXX', #mot de passe
    url='redshift-cluster-1.XXX.XXX.redshift.amazonaws.com', #Point de terminaison de l'écran du cluster Redshift
    port=5439, #Numéro de port Redshift
    db='dev' #Nom de la base de données Redshift
))

Ici, l'erreur ** Connection timed out ** suivante s'est produite. image.png

Après examen, il ressemble au matériel de référence ci-dessus «Connexion à ubuntu16.04@AWS postgresql à partir de python3 distant (psycopg2)», définissez donc la ** règle d'entrée de groupe de sécurité VNC ** de Redshift comme suit. Faire. image.png

Après avoir défini le groupe de sécurité, j'ai pu me connecter normalement.

Lisez les données sur Redshift et placez-les dans la trame de données.

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

Vérifions le résultat.

redshift_data.head()

image.png

Certes, j'ai pu l'obtenir en toute sécurité.

À la fin

Cette fois, j'ai essayé d'accéder aux données sur AWS Redshift à partir d'OCI-Data Science en utilisant ** sqlalchemy-redshift **.

Il existe peut-être une meilleure méthode de connexion que celle-ci, alors essayez-la. (Et dis moi ...)

OCI-Data Science est un service cible de Essai gratuit d'Oracle qui vous permet d'utiliser un crédit gratuit jusqu'à 300 $ pendant 30 jours maximum. Par conséquent, nous vous recommandons de l'essayer.

Let's Enjoy Data Science!

Recommended Posts

Essayez d'accéder aux données AWS Redshift à l'aide d'Oracle Cloud Infrastructure Data Science
Essayez «100 coups sur la science des données» ①
Essayez d'utiliser AWS SageMaker Studio
Démarrez la science des données dans le cloud
Essayez d'utiliser la fonction d'intégration de données de scanpy (sc.tl.ingest)
Essayez d'utiliser Python avec Google Cloud Functions