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.
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 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.
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. 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.
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
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.
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
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.
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.
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.
(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