Selasa, 12 Mei 2020

Cassandra (Part 2) + Python

Cassandra + Python

Instalasi

Platform yang didukung

Python 2.7, 3.4, 3.5, 3.6, 3.7 dan 3.8 didukung. Baik CPython (implementasi standar Python) dan PyPy didukung dan diuji.
Linux, OSX, dan Windows didukung.

Instalasi melalui pip

pip adalah alat yang disarankan untuk menginstal paket. Ini akan menangani menginstal semua dependensi Python untuk driver pada saat yang sama dengan driver itu sendiri. Untuk menginstal driver *:
pip install cassandra-driver 
Anda dapat menggunakan pip install --pre cassandra-driver jika Anda perlu menginstal versi beta.
* Catatan : jika ingin menggunakan ekstensi opsional, instal dependensi terlebih dahulu. Driver mungkin perlu diinstal ulang jika dependensi ditambahkan setelah instalasi awal.

Memverifikasi Instalasi Anda

Untuk memeriksa apakah instalasi berhasil, Anda dapat menjalankan:
 python -c 'import cassandra; print cassandra.__version__' 
Seharusnya mencetak sesuatu seperti "3.22.0".

( Opsional ) Grafik DataStax

Driver menyediakan API grafik lancar yang tergantung pada Apache TinkerPop (gremlinpython). Ini tidak diinstal secara default. Agar dapat membangun lintas GREMLIN, Anda perlu menginstal persyaratan grafik :
 pip install cassandra-driver[graph] 
Lihat DataStax Graph Fluent API untuk detail lebih lanjut tentang API ini.

( Opsional ) Dukungan Kompresi

Kompresi secara opsional dapat digunakan untuk komunikasi antara pengemudi dan Cassandra. Saat ini ada dua algoritma kompresi yang didukung: snappy (di Cassandra 1.2+) dan LZ4 (hanya di Cassandra 2.0+). Jika tersedia untuk pengemudi dan Cassandra juga mendukungnya, itu akan digunakan secara otomatis.
Untuk dukungan lz4:
 pip install lz4 
Untuk dukungan cepat:
 pip install python-snappy 
(Jika menggunakan turunan Debian Linux seperti Ubuntu, mungkin lebih mudah untuk menjalankan apt-get install python-snappy .)

( Opsional ) Dukungan Metrik

Pengemudi memiliki dukungan Cluster.metrics untuk menangkap Cluster.metrics tentang kueri yang Anda jalankan. Namun, perpustakaan scales diperlukan untuk mendukung ini:
 pip install scales 

Instalasi Mempercepat

Secara default, menginstal driver melalui pip menggunakan roda khusus platform yang telah disiapkan sebelumnya jika tersedia. Jika menggunakan distribusi sumber daripada roda, Cython digunakan untuk mengkompilasi bagian-bagian tertentu dari driver. Ini membuat jalur panas tersebut lebih cepat saat runtime, tetapi proses kompilasi Cython dapat memakan waktu lama - selama 10 menit di beberapa lingkungan.
Di lingkungan di mana kinerja kurang penting, mungkin layak untuk menonaktifkan Cython seperti yang didokumentasikan di bawah ini . Anda juga dapat menggunakan CASS_DRIVER_BUILD_CONCURRENCY untuk meningkatkan jumlah utas yang digunakan untuk membangun driver dan ekstensi C apa pun:
Copy
 $ # installing from source $ CASS_DRIVER_BUILD_CONCURRENCY = 8 python setup.py install  
$ # installing from pip $ CASS_DRIVER_BUILD_CONCURRENCY = 8 pip install cassandra-driver 

Kesalahan Instalasi OSX

Jika Anda menginstal di OSX dan menginstal XCode 5.1, Anda mungkin melihat kesalahan seperti ini:
 clang: error: unknown argument: '-mno-fused-madd' [-Wunused-command-line-argument-hard-error-in-future] 
Untuk memperbaiki ini, jalankan kembali instalasi dengan flag kompilasi tambahan:
Copy
 ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future pip install cassandra-driver 

Catatan Instalasi Windows

Menginstal driver dengan ekstensi di Windows terkadang menghadirkan beberapa tantangan. Beberapa catatan tentang hang-up umum:
Pengaturan membutuhkan kompiler. Saat menggunakan Python 2, ini sesederhana menginstal paket ini (tautan ini juga dipancarkan saat instalasi jika setuptools tidak dapat menemukan sumber yang dibutuhkan). Tergantung pada pengaturan sistem Anda, paket ini dapat diinstal sebagai aplikasi khusus pengguna. Pastikan untuk menginstal untuk semua orang, atau setidaknya sebagai pengguna yang akan membangun lingkungan Python.
Dimungkinkan juga untuk menjalankan build dengan kompiler pilihan Anda. Pastikan untuk memiliki pengaturan lingkungan Anda dengan jalur yang tepat. Pastikan arsitektur target kompilator cocok dengan bitime runtime Python Anda. Mungkin cara termudah untuk melakukan ini adalah menjalankan build / install dari Visual Studio Command Prompt (pintasan yang diinstal dengan Visual Studio yang sumber lingkungan yang sesuai dan menyajikan sebuah shell).

Instalasi Manual

Anda selalu dapat menginstal driver langsung dari sumber checkout atau tarball. Saat menginstal secara manual, pastikan dependensi python sudah diinstal. Anda dapat menemukan daftar dependensi di requirement.txt .
Setelah dependensi diinstal, jalankan:
 python setup.py install 

( Opsional ) Ketergantungan Non-python

Pengemudi memiliki beberapa fitur opsional yang memiliki dependensi non-Python.

C Extensions

Secara default, sejumlah ekstensi dikompilasi, menyediakan hashing yang lebih cepat untuk perutean token-aware dengan Murmur3Partitioner , integrasi loop peristiwa libev , dan ekstensi yang dioptimalkan oleh Cython.
Saat menginstal secara manual melalui setup.py, Anda dapat menonaktifkan keduanya dengan opsi --no-extensions , atau menonaktifkannya secara selektif dengan --no-murmur3 , --no-libev , atau --no-cython .
Untuk mengkompilasi ekstensi, pastikan bahwa GCC dan header Python tersedia.
Di Ubuntu dan Debian, ini dapat dilakukan dengan menjalankan:
 $ sudo apt-get install gcc python-dev 
Pada sistem berbasis RedHat dan RedHat seperti CentOS dan Fedora:
 $ sudo yum install gcc python-devel 
Pada OS X, instalasi homebrew dari Python harus menyediakan header yang diperlukan.
Lihat Catatan Instalasi Windows untuk catatan tentang mengkonfigurasi lingkungan build pada Windows.

Ekstensi berbasis cython

Secara default, paket ini menggunakan Cython untuk mengoptimalkan modul inti dan membangun ekstensi khusus. Ini bukan persyaratan yang sulit, tetapi digunakan secara default untuk membangun ekstensi yang menawarkan kinerja yang lebih baik daripada implementasi Python murni.
Ini adalah tahap pembuatan yang mahal, terutama di lingkungan yang bersih di mana kompiler Cython harus dibangun. Tahap pembuatan ini dapat dihindari dengan menggunakan sakelar bangun, atau variabel lingkungan:
 python setup.py install --no-cython 
Atau, variabel lingkungan dapat digunakan untuk mengalihkan opsi ini terlepas dari konteks:
 CASS_DRIVER_NO_CYTHON=1 <your script here> - or, to disable all extensions: CASS_DRIVER_NO_EXTENSIONS=1 <your script here> 
Metode ini diperlukan saat menggunakan pip, yang tidak menyediakan cara lain untuk menyuntikkan opsi pengguna dalam satu perintah:
 CASS_DRIVER_NO_CYTHON=1 pip install cassandra-driver CASS_DRIVER_NO_CYTHON=1 sudo -E pip install ~/python-driver 
Variabel lingkungan adalah pilihan yang lebih disukai karena mencakup semua permintaan setup.py, dan akan mencegah Cython terwujud sebagai persyaratan pengaturan.
Jika konfigurasi sudo Anda tidak mengizinkan SETENV, Anda harus menekan bendera opsi ke bawah melalui pip. Namun, pip menerapkan opsi ini untuk semua dependensi (yang memecah pada bendera kustom). Karena itu, Anda harus menginstal dependensi terlebih dahulu, kemudian gunakan opsi instal:
 sudo pip install six futures sudo pip install --install-option="--no-cython" 

dukungan libev

Driver saat ini menggunakan modul asyncore Python untuk loop acara default. Untuk kinerja yang lebih baik, libev juga didukung melalui ekstensi C.
Jika Anda menggunakan Linux, Anda harus dapat menginstal libev melalui manajer paket. Misalnya, di Debian / Ubuntu:
 $ sudo apt-get install libev4 libev-dev 
Di RHEL / CentOS / Fedora:
 $ sudo yum install libev libev-devel 
Jika Anda menggunakan Mac OS X, Anda harus dapat menginstal libev melalui Homebrew . Misalnya, di Mac OS X:
 $ brew install libev 
Ekstensi libev tidak dibangun untuk Windows (proses pembuatannya rumit, dan implementasi Windows tetap menggunakan pilih).
Jika berhasil, Anda harus dapat membangun dan menginstal ekstensi (hanya menggunakan setup.py build atau setup.py install ) dan kemudian menggunakan loop acara libev dengan melakukan hal berikut:
Copy
>>> from cassandra.io.libevreactor import LibevConnection
>>> from cassandra.cluster import Cluster
>>> cluster = Cluster ()  
>>> cluster . connection_class = LibevConnection
>>> session = cluster . connect ()
( Opsional ) Mengkonfigurasi SSL
Andrew Mussey telah menerbitkan panduan menyeluruh tentang Penggunaan SSL dengan driver DataStax Python .

Tidak ada komentar:

Posting Komentar