Apakah Python cocok untuk data besar

14

Saya membaca di posting ini Apakah bahasa R cocok untuk Big Data yang merupakan data besar 5TB, dan sementara itu melakukan pekerjaan yang baik dalam memberikan informasi tentang kelayakan bekerja dengan jenis data di Rdalamnya memberikan informasi yang sangat sedikit tentang Python. Saya bertanya-tanya apakah Pythondapat bekerja dengan data sebanyak ini juga.

ragingSloth
sumber

Jawaban:

18

Untuk memperjelas, saya merasa seperti referensi pertanyaan asli oleh OP mungkin bukan yang terbaik untuk format tipe SO, tapi saya pasti akan mewakili pythondalam kasus khusus ini.

Biarkan saya mulai saja dengan mengatakan bahwa terlepas dari ukuran data Anda, pythontidak boleh menjadi faktor pembatas Anda. Bahkan, hanya ada beberapa masalah utama yang akan Anda hadapi ketika berurusan dengan kumpulan data besar:

  • Membaca data ke dalam memori - Sejauh ini, ini adalah masalah paling umum yang dihadapi dunia data besar. Pada dasarnya, Anda tidak dapat membaca lebih banyak data daripada memori (RAM) Anda. Cara terbaik untuk memperbaikinya adalah dengan melakukan operasi atom pada data Anda alih-alih mencoba membaca semuanya sekaligus.
  • Menyimpan data - Ini sebenarnya hanya bentuk lain dari masalah sebelumnya, pada saat bangun 1TB, Anda mulai harus mencari tempat lain untuk penyimpanan. AWS S3 adalah sumber daya yang paling umum, dan pythonmemiliki botoperpustakaan yang fantastis untuk memfasilitasi memimpin dengan banyak data.
  • Latensi jaringan - Memindahkan data di antara berbagai layanan akan menjadi hambatan Anda. Tidak ada jumlah besar yang dapat Anda lakukan untuk memperbaikinya, selain mencoba mengambil sumber daya yang terletak bersama dan menghubungkannya ke dinding.
indico
sumber
13

Ada beberapa hal yang perlu Anda pahami ketika berhadapan dengan Big data -

Apa itu Big data?

Anda mungkin menyadari V's Big data terkenal - Volume, Velocity, Variety ... Jadi, Python mungkin tidak cocok untuk semua. Dan itu berlaku dengan semua alat sains data yang tersedia. Anda perlu tahu alat mana yang baik untuk tujuan apa.

Jika berurusan dengan Volume data yang besar:

  • Babi / Sarang / Hiu - Pembersihan data dan pekerjaan ETL
  • Hadoop / Spark - Komputasi paralel terdistribusi
  • Mahout / ML-Lib - Pembelajaran Mesin

Sekarang, Anda dapat menggunakan R / Python di tahap-tahap menengah, tetapi Anda akan menyadari bahwa mereka menjadi hambatan di seluruh proses Anda.

Jika berurusan dengan Velocity of data:

  • Kafka / Storm - Sistem throughput tinggi

Orang-orang mencoba R / Python di sini tapi sekali lagi itu tergantung pada jenis paralelisme yang Anda inginkan dan kompleksitas model Anda.

Analisis macam apa yang ingin Anda lakukan?

Jika model Anda menuntut seluruh data untuk pertama kali dibawa ke dalam memori, maka model Anda seharusnya tidak rumit karena jika data antara besar, maka kode akan rusak. Dan jika Anda berpikir untuk menulisnya ke disk maka Anda akan menghadapi penundaan tambahan karena disk baca / tulis lambat dibandingkan dengan RAM.

Kesimpulan

Anda pasti dapat menggunakan Python dalam ruang data besar (Pasti, karena orang-orang mencoba dengan R, mengapa tidak Python) tetapi ketahui data dan kebutuhan bisnis Anda terlebih dahulu. Mungkin ada alat yang lebih baik tersedia untuk hal yang sama dan selalu ingat:

Alat Anda seharusnya tidak menentukan bagaimana Anda menjawab pertanyaan. Pertanyaan Anda harus menentukan alat apa yang Anda gunakan.

Ankit
sumber
8

Python memiliki beberapa alat yang sangat bagus untuk bekerja dengan data besar:

numpy

Array memmory-mapped Numpy memungkinkan Anda mengakses file yang disimpan di disk seolah-olah itu sebuah array. Hanya bagian-bagian dari array yang Anda gunakan secara aktif yang perlu dimuat ke dalam memori. Dapat digunakan hampir sama dengan array biasa.

h5py dan pytables

Kedua perpustakaan ini menyediakan akses ke file HDF5. File-file ini memungkinkan akses ke bagian data saja. Lebih lanjut, berkat pustaka dasar yang digunakan untuk mengakses data, banyak operasi matematika dan manipulasi data lainnya dapat dilakukan tanpa memuatnya ke dalam struktur data python. File masif, sangat terstruktur dimungkinkan, jauh lebih besar dari 5 TB. Ini juga memungkinkan kompresi yang mulus dan tanpa kehilangan.

basis data

Ada berbagai jenis database yang memungkinkan Anda untuk menyimpan kumpulan data besar dan memuat hanya bagian-bagian yang Anda butuhkan. Banyak basis data memungkinkan Anda untuk melakukan manipulasi tanpa memuat data ke dalam struktur data python sama sekali.

panda

Ini memungkinkan akses tingkat yang lebih tinggi ke berbagai jenis data, termasuk data HDF5, file csv, database, bahkan situs web. Untuk data besar, ia menyediakan pembungkus di sekitar akses file HDF5 yang membuatnya lebih mudah untuk melakukan analisis pada set data besar.

mpi4py

Ini adalah alat untuk menjalankan kode python Anda secara terdistribusi di banyak prosesor atau bahkan beberapa komputer. Ini memungkinkan Anda untuk bekerja pada bagian data Anda secara bersamaan.

dask

Ini memberikan versi array numpy normal yang mendukung banyak operasi numpy normal dengan cara multi-core yang dapat bekerja pada data yang terlalu besar untuk masuk ke dalam memori.

api

Alat yang dirancang khusus untuk data besar. Ini pada dasarnya adalah pembungkus di sekitar perpustakaan di atas, menyediakan antarmuka yang konsisten untuk berbagai metode yang berbeda untuk menyimpan data dalam jumlah besar (seperti HDF5 atau database) dan alat untuk membuatnya mudah untuk memanipulasi, melakukan operasi matematika, dan menganalisis data yang terlalu besar untuk masuk ke memori.

Kucing hitam
sumber
4

Benar. Ketika Anda bekerja dengan data pada skala itu, biasanya menggunakan kerangka data besar, dalam hal ini python atau bahasa apa pun yang Anda gunakan hanyalah antarmuka. Lihat misalnya Panduan Pemrograman Python Spark . Jenis data apa yang Anda miliki dan apa yang ingin Anda lakukan dengannya?

Emre
sumber
3

Untuk menangani jumlah data yang demikian, bahasa pemrograman bukanlah perhatian utama tetapi kerangka kerja pemrogramannya. Kerangka kerja seperti MapReduce atau Spark memiliki ikatan ke banyak bahasa termasuk Python. Kerangka kerja ini tentu saja memiliki banyak paket siap pakai untuk tugas analisis data. Tetapi pada akhirnya itu semua menjadi kebutuhan Anda, yaitu, apa tugas Anda? Orang-orang memiliki definisi tugas analisis data yang berbeda, beberapa di antaranya dapat dengan mudah diselesaikan dengan database relasional. Dalam hal ini, SQL jauh lebih baik daripada semua alternatif lain.

lgylym
sumber
2

Saya percaya bahasa itu sendiri tidak ada hubungannya dengan kemampuan kinerja, ketika datang ke data besar. Yang penting adalah:

  • Seberapa besar data sebenarnya
  • Proses apa yang akan Anda lakukan di atasnya
  • Perangkat keras apa yang akan Anda gunakan
  • Yang merupakan perpustakaan spesifik yang Anda rencanakan untuk digunakan

Bagaimanapun, Python diadopsi dengan baik di komunitas ilmu data.

Mateva
sumber
2

Saya telah menggunakan Anaconda Python 3.4 dan Panda untuk mencari basis data 10M agar sesuai dengan 20 ribu kredensial login. Membutuhkan waktu sekitar satu menit. Internal panda memanfaatkan memori dengan baik. Yang mengatakan, data yang benar-benar besar membutuhkan arsitektur pemrosesan yang cocok dengan masalah. Panda hanyalah lem (logika) dalam persamaan ini, dan alat lain dapat melakukan ini juga. R, Scala, Haskell, SAS, dll. Dapat mereplikasi beberapa logika - mungkin cukup untuk menjawab pertanyaan lebih cepat. Tapi python membuat alat tujuan umum yang baik (terbaik?). Anda dapat menjalankan kode R dalam python, serta sebagian besar bahasa lainnya. Meskipun interpretatif, ada teknik dan alat kinerja tinggi seperti pypy yang dapat membuat python berjalan hampir secepat alat benchmark dengan hanya sedikit usaha lebih. Dan python memiliki banyak perpustakaan yang melakukan apa saja - lihat daftar di atas.

Jika Anda bertanya apakah Anda harus belajar dan menggunakan python, jawaban saya adalah ya. Artikel menunjukkan bahwa python digunakan lebih dari R di antara orang-orang yang menggunakan keduanya. Tetapi beberapa masalah ilmu data diselesaikan dengan satu alat. Ini bisa menjadi alat masuk Anda, tetapi hanya itu - alat. Dan sama seperti tidak ada orang waras membangun rumah hanya dengan palu, tidak ada Ilmuwan data waras hanya menggunakan satu alat.

Harvey
sumber
0

Sangat lucu bagaimana orang mencampur data besar dengan ilmu data dan intelijen bisnis.

Pertama, data besar berarti "banyak data", begitu banyak informasi yang tidak sesuai dengan basis data konvensional. Namun, kadang-kadang big data bahkan tidak layak "nilai" informasi tetapi dokumen, gambar dan sebagainya.

Jadi, untuk memproses data besar, KAMI MEMBUTUHKAN KECEPATAN. Python keluar dari liga, jadi R. Namun, jika tugas semudah mengambil CSV dan memasukkan ke dalam database, maka itu ETL, kita tidak perlu pemrograman untuk melakukan itu.

Dan ketika informasinya dikurangi, maka kita bisa menerapkan python, r atau apa pun yang Anda mau. Bahkan Excel. Namun, pada tahap ini, Big Data tidak lagi besar tetapi data konvensional.

IMHO, Java lebih cocok untuk Big Data (untuk seluruh rantai) tetapi orang menggunakan Python sebagai default untuk beberapa alasan tidak taktis.

magallanes
sumber