Dies ist ein Memo über den Zugriff auf dashDB for Analytics, das in IBM Watson Data Platform zusammengefasst ist, von Python, dem Mainstream für die numerische Datenverarbeitung.
dashDB ist ein Analysedienst, der In-Memory-Analysen mit "DB2 BLU" und In-Database-Analysen von PureData for Analytics (Netezza) kombiniert und als Cloud-Dienst verwendet werden kann. Es ist auf Bluemix verfügbar, einer Cloud-Plattform von IBM. dashDB verwendet die in DB2 integrierte BLU-Beschleunigung als zentrale Analyse-Engine. BLU Acceleration ist eine völlig neue SQL-Verarbeitungs-Engine, die auf den Forschungsergebnissen des IBM Basic Research Institute basiert. BLU Acceleration steckt voller Innovationen, die in den Funktionen und Vorteilen von DB2 für LUW eingeführt wurden. Der wichtigste Punkt ist, dass die dem Analyseprozess inhärente Abstimmung nicht mehr erforderlich ist. Alles, was der Benutzer tun muss, um die BLU-Beschleunigung zu verwenden, ist das Auffüllen der Daten. Die Hochgeschwindigkeitsanalyse kann unmittelbar nach der Dateneingabe durchgeführt werden. Dies ist ein wesentliches Element für das Angebot von dashDB als Analysedienst in der Cloud. Um es anders herum auszudrücken, kann gesagt werden, dass dashDB durch die Einführung von BLU Acceleration, einer Analyse-Engine, die keine Optimierung erfordert, ermöglicht wurde. DashDB wird als Service bereitgestellt, sodass Sie es schnell nutzen können, ohne dass eine Erstinvestition oder ein Infrastrukturaufbau erforderlich ist. (1)
Python bietet Bibliotheken für die numerische Datenverarbeitung, wissenschaftliche und technologische Berechnungen auf hohem Niveau, maschinelles Lernen usw., und Python ist möglicherweise als Analysesprache beliebter als die R-Sprache. Es gibt genug Informationen, um zu glauben, dass dies der Fall ist. (2), (3), (4) Schauen wir uns also an, wie DashDB für Analytics aus Python verwendet wird.
Python & dashDB Sie können ODBC und JDBC verwenden, um von Python aus eine Verbindung zu dashDB herzustellen. Anweisungen zu den Einstellungen und Links zum Herunterladen von Treibern finden Sie auf dem Bluemix dashDB-Verwaltungsbildschirm.
Der folgende Screenshot zeigt einen der DashDB-Administrationsbildschirme von Bluemix, wobei Connect und SSL ausgewählt sind. Um von Python über den ODBC-Treiber eine Verbindung zu dashDB herzustellen, müssen Sie den Treiber herunterladen und installieren. Referenz (8) hilft Ihnen bei der Installation und Konfiguration des ODBC-Treibers. Sie können jedoch keine Verbindung zum DSN-Namen herstellen, es sei denn, Sie verwenden den Namen, der auf der Seite angezeigt wird, die der obigen Bildschirmkopie entspricht. Der folgende Beispielcode funktioniert in Ubuntu 14.04, das in der vagabundierenden Umgebung meines MacBook ausgeführt wird.
!/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.
Wenn Sie den oben genannten ODBC-Treiber herunterladen, ist auch der JDBC-Treiber enthalten, sodass Sie die Verbindung auch unter http://pythonhosted.org/ibmdbpy/start.html#jdbc- auf der Referenzmaterial-Site (5) herstellen können. Der in Verbindung stehende JDBC-Treiber kann auch von Referenz (9) heruntergeladen werden. Dies ist auch der Code, der unter Ubuntu14.04 ausgeführt wird, einem gefälschten Server, der unter MacBook ausgeführt wird.
!/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();
Ab dem 1. Juni 2017 funktioniert dieser Code jedoch nicht mehr. Die Ursache ist, dass die Version von JayDeBeApi aktualisiert wurde. Dieses Problem kann unter der folgenden URL gefunden werden: RuntimeError: No matching overloads found. at native/common/jp_method.cpp:117 #18 https://github.com/ibmdbanalytics/ibmdbpy/issues/18
Das bmdbpy-Projekt bietet eine interaktive Python-Schnittstelle für IBM dashDB- und IBM DB2-Datenbankmanipulationsalgorithmen und Datenmanipulation. Beschleunigen Sie die Python-Analyse, indem Sie in Python geschriebene Vorgänge nahtlos in verbundene Datenbanken übertragen, um sie auszuführen. Dadurch profitieren Sie von leistungssteigernden Funktionen in der Datenbank wie spaltenorientiertem Speicher und paralleler Verarbeitung. erhalten. Das ibmdbpy-Projekt kann von Python-Entwicklern ohne Lernaufwand verwendet werden. Dies liegt daran, dass es die bekannte Benutzeroberfläche der Pandas-Bibliothek zum Bearbeiten von Daten und der Scikit-Lernbibliothek für Algorithmen für maschinelles Lernen nachahmt. Das ibmdbpy-Projekt ist in Python-Versionen 2.7-3.4 verfügbar. Sie können über ODBC oder JDBC eine Verbindung zu einer dashDB- oder DB2-Instanz herstellen. Das Projekt steckt noch in den Kinderschuhen und viele seiner Funktionen befinden sich noch in der Entwicklung. Einige Experimente haben jedoch bereits signifikante Leistungsvorteile bei der Arbeit mit mittleren oder großen Datenmengen gezeigt, dh Tabellen mit mehr als einer Million Zeilen. (Fünf) Die Pandas-Benutzeroberfläche kann intuitiv unter Bezugnahme auf 10 Minuten zu Pandas http://pandas.pydata.org/pandas-docs/stable/10min.html verstanden werden.
Es gibt ibmdbpy als Bibliothek zum Betreiben von dashDB von Python aus, und Sie können es mit pip install in Ihre eigene Ausführungsumgebung ablegen. (5) (6) (7)
ubuntu@ubuntu-xenial:~/dashDB$ pip install ibmdbpy
Es funktioniert wie folgt, aber es scheint notwendig, genauer hinzuschauen, da es sich noch in der Entwicklung befindet.
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 für Python kann mit pip install ibm_db installiert werden. Als ich es überprüfte, schien es ein Problem mit der Verbindung mit dem DSN-Namen zu geben, sodass ich erfolgreich darauf zugreifen konnte, als ich mit der Verbindungszeichenfolge ohne Verwendung des Katalogs darauf zugegriffen habe. Es scheint, dass Daten, die Japanisch enthalten, problemlos verwendet werden können.
!/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)
Das Ausführungsergebnis lautet wie folgt: Dies entspricht dem normalen ODBC-Zugriff.
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.
Ich habe versucht, mit Python auf die DashDB von Bluemix für Analysen zuzugreifen. Das ibmdbpy-Projekt wendet eine mit Pandas kompatible Benutzeroberfläche an. Obwohl hohe Erwartungen bestehen, befindet es sich noch in einem frühen Entwicklungsstadium. Daher möchte ich die zukünftigen Ergebnisse im Auge behalten. Außerdem kann die Python-Version der Legacy-Datei ibm_db problemlos und bei stabilem Betrieb verwendet werden.
Es gibt auch eine Fortsetzung Wie schreibe ich Code, um auf Python Dash DB unter Blumix oder lokal zuzugreifen.
(1) Berühren Sie dashDB https://www.ibm.com/developerworks/jp/data/library/dashdb/dm-dashdb1-bluemix/ (2) Data Science mit Python http://pythondatascience.plavox.info/ (3) Warum Python für maschinelles Lernen ausgewählt wird 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) Datenanalyse mit Bluemix "dashDB": Ich habe versucht, ODBC auf dem Linux-Server http://qiita.com/azzeten/items/55dc4ad1535bf709403b einzustellen (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