Remarques sur l'accès à dashDB à partir de python

Il s'agit d'un mémo sur la façon d'accéder à dashDB for Analytics, qui est regroupé dans IBM Watson Data Platform, à partir de Python, qui est le principal pour le traitement des données numériques.

Qu'est-ce que dashDB

dashDB est un service d'analyse qui combine l'analyse en mémoire avec «DB2 BLU» et l'analyse en base de données de PureData for Analytics (Netezza) et peut être utilisé comme service cloud. Il est disponible sur Bluemix, une plate-forme cloud fournie par IBM. dashDB utilise l'accélération BLU intégrée à DB2 comme moteur d'analyse principal. BLU Acceleration est un tout nouveau moteur de traitement SQL développé sur la base des résultats de recherche du Basic Research Institute d'IBM. BLU Acceleration regorge d'innovations, telles qu'introduites dans les fonctionnalités et avantages de DB2 pour LUW. Le point le plus important est que le réglage qui était inhérent au processus d'analyse n'est plus nécessaire. Tout ce que l'utilisateur doit faire pour utiliser l'accélération BLU est de renseigner les données. L'analyse à grande vitesse peut être effectuée immédiatement après l'entrée des données. Il s'agit d'un élément essentiel pour que dashDB soit proposé en tant que service d'analyse sur le cloud. Pour le dire autrement, on peut dire que dashDB a été rendu possible grâce à l'introduction de BLU Acceleration, un moteur d'analyse qui ne nécessite pas de réglage. Et dashDB est fourni en tant que service, vous pouvez donc commencer à l'utiliser rapidement sans avoir besoin d'investissement initial ou de construction d'infrastructure. (1)

Python est un langage d'analyse

Python fournit des bibliothèques pour le traitement numérique des données, les calculs scientifiques et technologiques de haut niveau, l'apprentissage automatique, etc., et peut-être que Python est plus populaire en tant que langage d'analyse que le langage R. Il y a suffisamment d'informations pour penser que c'est le cas. (2), (3), (4) Voyons donc comment utiliser dashDB pour Analytics à partir de Python.

Python & dashDB Vous pouvez utiliser ODBC et JDBC pour vous connecter à dashDB depuis Python. Les instructions sur les paramètres et les liens pour télécharger les pilotes se trouvent sur l'écran d'administration de Bluemix dashDB.

Connexion ODBC

La capture d'écran suivante montre l'un des écrans d'administration dashDB de Bluemix, avec Connect sélectionné et SSL sélectionné. Pour vous connecter à dashDB depuis Python via le pilote ODBC, vous devez télécharger et installer le pilote. スクリーンショット 2017-06-01 21.42.46.png Reference (8) vous aidera à installer et à configurer le pilote ODBC. Cependant, vous ne pouvez pas vous connecter au nom DSN à moins d'utiliser le nom affiché sur la page correspondant à la copie d'écran ci-dessus. L'exemple de code ci-dessous fonctionne dans Ubuntu 14.04, qui s'exécute dans l'environnement vagabond de mon MacBook.

!/usr/bin/env python
-*- coding:utf-8 -*-
ODBC

from ibmdbpy.base import IdaDataBase
idadb = IdaDataBase(dsn="DASHDB", uid="******", pwd="***********")
print "current_schema = ", idadb.current_schema
idadb.close();
ubuntu@ubuntu-xenial:~/dashDB$ ./test1.py 
current_schema =  DASH9824
Connection closed.

Connexion JDBC

Si vous téléchargez le pilote ODBC mentionné ci-dessus, le pilote JDBC est également inclus, vous pouvez donc également définir la connexion à http://pythonhosted.org/ibmdbpy/start.html#jdbc- sur le site de référence (5). Situé en connexion, le pilote JDBC peut également être téléchargé à partir de Reference (9). C'est également le code qui s'exécute sur Ubuntu14.04, un faux serveur qui s'exécute sur MacBook.

!/usr/bin/env python
-*- coding:utf-8 -*-
JDBC
from ibmdbpy.base import IdaDataBase

jdbc = 'jdbc:db2://dashdb-entry-yp-dal09-09.services.dal.bluemix.net:50001/BLUDB:user=dash982;password=**********'
idadb = IdaDataBase(jdbc)
print idadb.current_schema
idadb.close();

Cependant, depuis le 1er juin 2017, ce code ne fonctionne pas. La cause est que la version de JayDeBeApi a été mise à niveau. Ce problème peut être trouvé à l'URL suivante: RuntimeError: No matching overloads found. at native/common/jp_method.cpp:117 #18 https://github.com/ibmdbanalytics/ibmdbpy/issues/18

interface interactive ibmdbpy

Le projet bmdbpy fournit une interface interactive Python pour les algorithmes de manipulation de base de données IBM dashDB et IBM DB2 et la manipulation de données. Accélère l'analyse Python en poussant de manière transparente les opérations écrites en Python vers les bases de données connectées pour qu'elles s'exécutent, bénéficiant ainsi de fonctionnalités améliorant les performances de la base de données, telles que le stockage orienté colonnes et le traitement parallèle. recevoir. Le projet ibmdbpy peut être utilisé par les développeurs Python sans apprentissage. En effet, il imite l'interface utilisateur bien connue de la bibliothèque Pandas pour manipuler les données et de la bibliothèque Scikit-learn pour les algorithmes d'apprentissage automatique. Le projet ibmdbpy est disponible dans les versions 2.7-3.4 de Python. Vous pouvez vous connecter à une instance dashDB ou DB2 via ODBC ou JDBC. Le projet en est encore à ses balbutiements et nombre de ses fonctionnalités sont encore en cours de développement. Cependant, certaines expériences ont déjà démontré des avantages significatifs en termes de performances lorsque vous travaillez avec des quantités moyennes ou importantes de données, c'est-à-dire des tables de plus d'un million de lignes. (Cinq) L'interface utilisateur de Pandas peut être comprise intuitivement en se référant à 10 Minutes to pandas http://pandas.pydata.org/pandas-docs/stable/10min.html.

Installer la bibliothèque ibmdbpy

Il existe ibmdbpy en tant que bibliothèque pour faire fonctionner dashDB à partir de Python, et vous pouvez le déposer dans votre propre environnement d'exécution avec pip install. (5) (6) (7)

ubuntu@ubuntu-xenial:~/dashDB$ pip install ibmdbpy

Exemple d'exécution d'ibmdbpy

Cela fonctionne comme ci-dessous, mais il semble qu'il soit nécessaire de voir un peu plus la situation car elle est en cours de développement.

ubuntu@ubuntu-xenial:~/dashDB$ python
Python 2.7.12 (default, Feb 15 2017, 05:35:22) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from ibmdbpy.base import IdaDataBase
>>> idadb = IdaDataBase(dsn="DASHDB", uid="******", pwd="*******")
>>> idadb.ida_query("SELECT* FROM SAMPLES.CITSTATUS")
 䥃 彔 佃 䕄 䥃 彔 䕄 䍓
0    1                                   Born in the U.S.
1    2  Born in Puerto Rico/Guam/Virgin Islands/Northe...
2    3                  Born abroad of American parent(s)
3    4                                Naturalized Citizen
4    5                          Not a citizen of the U.S.

Exécution SQL par ibm_db

Ibm_db pour Python peut être installé avec pip install ibm_db. Quand je l'ai vérifié, il semblait qu'il y avait un problème de connexion avec le nom DSN, donc j'ai réussi à y accéder lorsque j'y ai accédé avec la chaîne de caractères de connexion sans utiliser le catalogue. Il semble que les données contenant du japonais peuvent être utilisées sans problème.

!/usr/bin/env python                                                                                                         
import ibm_db
url = "DATABASE=BLUDB;HOSTNAME=dashdb-entry-yp-dal09-09.services.dal.bluemix.net;PORT=50001;PROTOCOL=TCPIP;UID=******; PWD=*****;SECURITY=ssl"
sql  = "SELECT* FROM SAMPLES.CITSTATUS"
conn = ibm_db.connect(url, "", "")
stmt = ibm_db.prepare(conn, sql)
ibm_db.execute(stmt)
data = ibm_db.fetch_tuple(stmt)
while(data):
    print data[0], data[1]
    data = ibm_db.fetch_tuple(stmt)

ibm_db.free_stmt(stmt)
ibm_db.close(conn)

Le résultat de l'exécution est le suivant, qui est le même que l'accès ODBC normal.

ubuntu@ubuntu-xenial:~/dashDB$ ./test5.py
1 Born in the U.S.
2 Born in Puerto Rico/Guam/Virgin Islands/Northern M
3 Born abroad of American parent(s)
4 Naturalized Citizen
5 Not a citizen of the U.S.

Résumé

J'ai essayé d'accéder à la dashDB de Bluemix pour des analyses avec Python. Le projet ibmdbpy applique une interface utilisateur compatible avec Pandas, et bien que les attentes soient élevées, il en est aux premiers stades de développement, je voudrais donc garder un œil sur les résultats futurs. De plus, la version Python de l'ancien ibm_db peut être utilisée sans problème avec un fonctionnement stable.

Il existe également une suite Comment écrire du code pour accéder à la base de données de tableau de bord python sur Blumix ou local.

Matériel de référence

(1) Touchons dashDB https://www.ibm.com/developerworks/jp/data/library/dashdb/dm-dashdb1-bluemix/ (2) Science des données avec Python http://pythondatascience.plavox.info/ (3) Pourquoi Python est choisi pour l'apprentissage automatique http://qiita.com/yaju/items/5502115d7e3d06e6bbdd (4) Scipy Lecture Notes http://www.turbare.net/transl/scipy-lecture-notes/index.html (5) ibmdbpy Accelerating Python Analytics by In-Database Processing http://pythonhosted.org/ibmdbpy/index.html (6) Python package index ibmdbpy 0.1.4 A Pandas-like SQL-wrapper for in-database analytics with IBM dashDB/DB2. https://pypi.python.org/pypi/ibmdbpy (7) GitHUB ibmdbanalytics/ibmdbpy https://github.com/ibmdbanalytics/ibmdbpy (8) Analyse des données avec Bluemix "dashDB": J'ai essayé de configurer ODBC sur le serveur Linux http://qiita.com/azzeten/items/55dc4ad1535bf709403b (9) DB2 JDBC Driver Versions and Downloads http://www-01.ibm.com/support/docview.wss?uid=swg21363866 (10) ibm_db 2.0.7 https://pypi.python.org/pypi/ibm_db/

Recommended Posts

Remarques sur l'accès à dashDB à partir de python
Remarque pour oct2py appelant le script Octave depuis Python
[Python] Notes sur l'analyse des données
Remarques sur l'installation de Python sur votre Mac
Remarques sur l'installation de Python sur CentOS
Notes sur Python et les types de dictionnaire
Remarques sur l'importation de données depuis MySQL ou CSV avec Python
Remarques sur l'accès à SQS depuis AWS VPC Lambda via un point de terminaison
Remarques sur l'installation de Python à l'aide de PyEnv
Appeler C / C ++ depuis Python sur Mac
Mettre à jour Mac Python de 2 à 3
Remarques sur l'utilisation d'OpenCV avec Windows10 Python 3.8.3.
Note de nfc.ContactlessFrontend () de nfcpy de python
Notes d'apprentissage depuis le début de Python 1
Remarques sur la réalisation de l'OCR japonais avec Python
Connexion de python à MySQL sur CentOS 6.4
Remarques sur la construction de Python et pyenv sur Mac
Notes d'apprentissage depuis le début de Python 2
Mémo de raclage Python
Note d'apprentissage Python_000
Notes d'apprentissage Python
Python sur Windows
twitter avec python3
Notes de débutant Python
Note d'apprentissage Python_006
sql à sql
notes de python C ++
python sur mac
MeCab de Python
Notes de grammaire Python
Note sur la bibliothèque Python
Python sur Windbg
notes personnelles python
mémo pandas python
Note d'apprentissage Python_001
notes d'apprentissage python
Notes d'installation de Python3.4
Remarques sur l'installation de Python3 et l'utilisation de pip sous Windows7
Remarques sur l'utilisation de dict avec python [Competition Pro]
Lier PHP et Python à partir de zéro sur Laravel
ABC125_C --GCD sur tableau noir [Notes résolues en Python]
Essayez d'accéder à l'API YQL directement depuis Python 3
[Python] Remarques sur l'accélération des algorithmes génétiques à l'aide du multitraitement
Utilisez Thingsspeak de Python
Conda Python avec Cygwin
Installer python sur WSL
Touchez MySQL depuis Python 3
notes personnelles en python manquantes
Configuration de PyOpenGL sur Python 3
Exploitez Filemaker depuis Python
Utiliser fluentd de python
Installez Python sur Pidora.
Installez Scrapy sur python3
Changements de Python 2 à Python 3.0
Remarques sur le traitement d'images HDR et RAW avec Python
Notes de développement de package Python
Python depuis ou import
Un mémo pour créer un environnement de développement python avec macOS Catalina
Manipuler des fichiers Excel à partir de python avec xlrd (mémo personnel)
Notes de céleri sur Django