Hinweise zum Zugriff auf dashDB über Python

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.

Was ist dashDB?

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 ist eine Sprache für die Analyse

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.

ODBC-Verbindung

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. スクリーンショット 2017-06-01 21.42.46.png 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.

JDBC-Verbindung

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

ibmdbpy interaktive Schnittstelle

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.

Installieren Sie die ibmdbpy-Bibliothek

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

Ausführungsbeispiel von 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.

SQL-Ausführung durch ibm_db

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.

Zusammenfassung

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.

Referenzmaterial

(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

Hinweise zum Zugriff auf dashDB über Python
Hinweis für oct2py beim Aufrufen des Octave-Skripts aus Python
[Python] Hinweise zur Datenanalyse
Hinweise zur Installation von Python auf Ihrem Mac
Hinweise zur Installation von Python unter CentOS
Hinweise zu Python- und Wörterbuchtypen
Hinweise zum Importieren von Daten aus MySQL oder CSV mit Python
Hinweise zum Zugriff auf SQS von AWS VPC Lambda über den Endpunkt
Hinweise zur Installation von Python mit PyEnv
Rufen Sie C / C ++ von Python auf dem Mac auf
Aktualisieren Sie Mac Python von 2 auf 3
Hinweise zur Verwendung von OpenCV mit Windows 10 Python 3.8.3.
Anmerkung von nfc.ContactlessFrontend () von nfcpy von Python
Notizen vom Anfang von Python 1 lernen
Hinweise zur japanischen OCR mit Python
Herstellen einer Verbindung von Python zu MySQL unter CentOS 6.4
Hinweise zum Erstellen von Python und Pyenv auf dem Mac
Notizen vom Anfang von Python 2 lernen
Python-Scraping-Memo
Python lernen note_000
Python-Lernnotizen
Python unter Windows
Twitter mit Python3
Python-Anfängernotizen
Python lernen note_006
SQL zu SQL
Python C ++ Notizen
Python auf Mac
MeCab von Python
Python-Grammatiknotizen
Python Library Hinweis
Python auf Windbg
Python persönliche Notizen
Python Pandas Memo
Python lernen note_001
Python-Lernnotizen
Installationshinweise zu Python3.4
Hinweise zur Installation von Python3 und zur Verwendung von pip unter Windows7
Hinweise zur Verwendung von dict mit Python [Competition Pro]
Verknüpfung von PHP und Python von Grund auf auf Laravel
ABC125_C --GCD auf Blackboard [In Python gelöste Notizen]
Versuchen Sie, direkt von Python 3 aus auf die YQL-API zuzugreifen
[Python] Hinweise zur Beschleunigung genetischer Algorithmen mithilfe von Multiprocessing
Verwenden Sie thingspeak aus Python
Python Conda mit Cygwin
Installieren Sie Python auf der WSL
Berühren Sie MySQL in Python 3
fehlende Ganzzahlen Python persönliche Notizen
PyOpenGL-Setup unter Python 3
Bedienen Sie Filemaker von Python aus
Verwenden Sie fließend Python
Installieren Sie Python auf Pidora.
Installieren Sie Scrapy auf Python3
Änderungen von Python 2 zu Python 3.0
Hinweise zur HDR- und RAW-Bildverarbeitung mit Python
Hinweise zur Entwicklung von Python-Paketen
Python aus oder importieren
Memo zum Erstellen einer Python-Entwicklungsumgebung mit macOS Catalina
Bearbeiten Sie Excel-Dateien aus Python mit xlrd (persönliches Memo)
Sellerie-Notizen zu Django