Last chance! 50% off DataCamp Premium
Sale ends in
Banyak terima kasih kepada Brian Granger, Fernando Pérez, dan Robert Kern atas masukan mereka untuk artikel ini!
Bagi pemula maupun ilmuwan data yang lebih berpengalaman, Jupyter Notebook adalah salah satu alat data science paling populer: lingkungan interaktif ini bukan hanya ideal untuk mengajar dan belajar, serta berbagi pekerjaan dengan rekan, tetapi juga memastikan riset yang dapat direproduksi. Namun, saat Anda mulai mempelajari cara menggunakan notebook ini, Anda akan sering menjumpai IPython.
Keduanya terkadang terlihat sinonim dan Anda pasti setuju ini membingungkan ketika ingin menggali lebih dalam: apakah magics bagian dari Jupyter atau IPython? Apakah menyimpan dan memuat notebook merupakan fitur IPython atau Jupyter?
Anda mungkin bisa terus bertanya panjang lebar.
Tulisan blog hari ini bertujuan menjelaskan beberapa perbedaan inti antara keduanya secara lebih eksplisit, tidak hanya dari asal-usulnya untuk memahami hubungan keduanya, tetapi juga mencakup fitur spesifik yang termasuk pada salah satu maupun lainnya, sehingga Anda lebih mudah membedakan keduanya!
Pertimbangkan juga untuk membaca Panduan Definitif Jupyter Notebook dari DataCamp untuk kiat dan trik, praktik terbaik, contoh, dan banyak lagi.
Untuk benar-benar memahami apa itu Jupyter Notebook dan bagaimana bedanya dengan IPython, ada baiknya terlebih dahulu membaca sedikit tentang bagaimana keduanya masuk dalam sejarah dan masa depan computational notebook.
Pertengahan 1980-an, MATLAB dirilis oleh The MathWorks, yang didirikan oleh Jack Little, Steve Bangert, dan Cleve Moler.
Melompat ke akhir 1980-an, tepatnya 1987. Theodore Gray mulai mengerjakan antarmuka depan notebook Mathematica dan setahun kemudian, dirilis ke publik. GUI ini memungkinkan pembuatan dan pengeditan dokumen notebook secara interaktif yang berisi kode program yang dicetak rapi, teks terformat, serta banyak fitur seperti matematika typeset, grafik, komponen GUI, tabel, dan suara. Kemampuan pengolah kata standar juga ada, seperti pemeriksaan ejaan multibahasa waktu nyata. Anda bisa menampilkan dokumen dalam mode slideshow untuk presentasi.
Jika Anda melihat bagaimana notebook-notebook ini disusun, terlihat jelas bahwa notebook bergantung pada hierarki sel yang memungkinkan penjabaran dan pembagian bagian dokumen, yang kini juga Anda temukan di Jupyter Notebook.
Masih di akhir 1980-an, pada 1989, Maple memperkenalkan GUI bergaya notebook pertama mereka. Ini disertakan pada versi 4.3 untuk Macintosh. Versi antarmuka baru untuk X11 dan Windows menyusul pada 1990. Notebook awal ini menginspirasi dan meletakkan dasar bagi pihak lain untuk mengembangkan apa yang kelak disebut sebagai “notebook data science”.
Banyak computational notebook dibuat setelah Maple dan Mathematica. Namun, bagian ini akan berfokus pada notebook yang berkontribusi pada kebangkitan data science notebook. Anda akan melihat beberapa notebook ini masih sangat populer di kalangan calon maupun praktisi data science yang lebih berpengalaman.
Sage notebook sebagai sistem berbasis peramban pertama kali dirilis pertengahan 2000-an dan kemudian pada 2007, dirilis versi baru yang lebih kuat, memiliki akun pengguna, dan bisa digunakan untuk memublikasikan dokumen. Desain UI-nya menyerupai Google Docs karena tata letak Sage notebook didasarkan pada tata letak Google Notebook.
Pencipta Sage notebook mengonfirmasi bahwa mereka adalah pengguna setia notebook Mathematica dan lembar kerja Maple. Pendorong lain yang penting dalam pengembangan Sage notebook antara lain: pertama, para pengembang memiliki kontak dekat dengan tim di balik IPython, juga karena versi Sage berbasis terminal menggunakan IPython. Kedua, ada “upaya yang gagal” oleh dua mahasiswa untuk menyediakan GUI bagi IPython, dan ketiga, bangkitnya aplikasi web “AJAX” (pseudo-akronim dari “Asynchronous JavaScript And XML”), yang tidak mengharuskan pengguna memuat ulang seluruh halaman setiap kali melakukan sesuatu.
Ini, misalnya, terjadi saat Anda mengisi formulir di situs: tanpa AJAX, Anda akan diarahkan ke halaman baru dengan informasi baru dari server saat menekan tombol submit. Dengan AJAX, JavaScript akan mengirim permintaan ke server, mendapatkan hasilnya, dan memperbarui layar. Anda tidak perlu memuat ulang, juga tidak diarahkan.
Aplikasi AJAX lain yang mungkin Anda kenal antara lain Gmail, Google Maps, Facebook, Twitter,… Seperti yang Anda lihat, hampir semuanya kini menggunakan AJAX.
Akhir 2001, kurang lebih dua puluh tahun setelah Guido van Rossum mulai mengembangkan Python di National Research Institute for Mathematics and Computer Science di Belanda, Fernando Pérez mulai mengembangkan IPython. Proyek ini sangat dipengaruhi oleh notebook Mathematica dan lembar kerja Maple, seperti halnya Sage notebook dan banyak proyek lain yang mengikutinya.
Pada 2005, ada upaya pertama membangun sistem notebook dengan Wx, sebuah toolkit widget dan pustaka alat untuk membuat GUI aplikasi lintas platform. Dua mahasiswa Google Summer of Code mengerjakan prototipe ini di bawah arahan Robert Kern dan Fernando Pérez. Setelah itu, Robert menambahkan pekerjaan pada masalah tersebut. Ini lebih merupakan pembersihan kode inti IPython dengan tujuan memudahkan penulisan antarmuka depan GUI wxPython untuk shell IPython dibandingkan prototipe sistem notebook. Pembersihan ini juga membantu mewujudkan sistem notebook yang rapi dan sebagian diantaranya digabungkan sedikit demi sedikit ke IPython saat upaya notebook yang akhirnya berhasil dimulai.
Prototipe kedua IPython dibangun pada musim panas 2006 oleh Min Ragan-Kelley dan dibimbing oleh Brian Granger. Prototipe ini berbasis web dan memiliki backend basis data SQL tetapi pekerjaan dihentikan karena implementasinya akhirnya terbukti terlalu kompleks untuk teknologi web saat itu.
Prototipe ketiga IPython notebook datang pada Oktober 2010 dan dibuat pihak ketiga dalam beberapa hari hack. Akhirnya, pada Musim Semi–Musim Panas 2011, Brian Granger bekerja penuh waktu pada prototipe web notebook, berdasarkan pekerjaan yang dia lakukan pada 2010, saat ia membuat arsitektur kernel dan spesifikasi pesan IPython bersama Fernando Pérez dan PyZMQ bersama Min Ragan Kelley.
PyZMQ adalah pustaka yang menyediakan binding Python untuk ZeroMQ; Pustaka ini dibutuhkan untuk fitur komputasi paralel IPython, konsol qt, dan notebook.
PyZMQ dan websockets adalah teknologi utama yang memungkinkan notebook terwujud. Menjelang musim gugur tahun yang sama, kontributor lain (seperti Matthias Bussonnier, Min, dan Fernando) juga ikut berkontribusi. Pada 21 Desember 2011, dirilis versi pertama IPython Notebook (0.12).
Pada tahun-tahun berikutnya, tim memperoleh penghargaan, seperti Advancement of Free Software untuk Fernando Pérez pada 23 Maret 2013 dan Jolt Productivity Award, serta pendanaan dari Alfred P. Sloan Foundations, antara lain.
Terakhir, pada 2014, Project Jupyter dimulai sebagai proyek turunan dari IPython.
Rilis terakhir IPython sebelum pemisahan berisi shell interaktif, server notebook, konsol Qt, dan lain-lain dalam satu repositori. Proyeknya besar, dengan komponen-komponen yang semakin menjadi proyek berbeda yang kebetulan terkait pada proyek yang sama.
Perlu dicatat ukuran proyek bukan satu-satunya alasan Project Jupyter dimulai: dari 2011 hingga 2014, IPython notebook mulai bekerja dengan bahasa pemrograman lain. Yang pertama adalah Julia, lalu R. Fakta bahwa IPython notebook, yang menyiratkan notebook berbasis Python saja, juga bekerja dengan kernel bahasa lain seperti Julia dan R, membuat orang bingung.
Mengapa namanya “IPython” jika ada bahasa pemrograman lain yang terlibat?
Nama “Jupyter” terinspirasi dari bahasa terbuka utama untuk sains (yaitu Julia, Python, dan R), dan meskipun tampak seperti akronim lain, ini tidak pernah berarti bahasa lain tidak diterima. Lebih dari itu, nama ini lebih merepresentasikan proyek yang dikembangkan para pengembang dan memberi isyarat pada akar ilmiah proyek tersebut!
Setelah Project Jupyter dimulai, bagian-bagian IPython yang bebas-bahasa, seperti format notebook, protokol pesan, konsol Qt, aplikasi web notebook, dan lain-lain dipindahkan ke proyek Jupyter. Anda dapat menemukan organisasi utama Jupyter di GitHub di sini.
Di komunitas Jupyter dan IPython, ini disebut “The Big Split”.
Kini IPython hanya memiliki dua peran: menjadi backend Python untuk Jupyter Notebook, yang juga dikenal sebagai kernel, dan shell Python interaktif. Namun bukan hanya itu: dalam ekosistem IPython, Anda juga akan menemukan kerangka kerja komputasi paralel. Anda akan membacanya lebih lanjut nanti!
Dan seperti IPython, Project Jupyter sebenarnya adalah satu nama untuk sekumpulan proyek: tiga aplikasi yang dikandungnya adalah Notebook itu sendiri, Console, dan Qt console, namun juga ada sub-proyek seperti JupyterHub untuk mendukung penerapan notebook, nbgrader untuk tujuan edukasi, dan lain-lain. Anda dapat melihat ikhtisar arsitektur Jupyter di sini.
Perlu dicatat bahwa evolusi proyek inilah yang menjelaskan kebingungan banyak Pythonista terkait IPython dan Jupyter: karena yang satu lahir dari yang lain (dan cukup baru), masih ada yang kesulitan menggunakan nama yang tepat untuk konsep-konsepnya. Namun, faktor yang mungkin lebih mempersulit adalah evolusi itu sendiri: karena yang satu lahir dari yang lain, terdapat tumpang tindih yang cukup besar antara fitur IPython dan Jupyter Notebook yang kadang sulit dibedakan! Cara membedakannya akan jelas di bagian-bagian selanjutnya dari tulisan ini. Jika Anda ingin mengetahui detail lebih banyak tentang bagaimana IPython dikembangkan, lihat kisah pribadi Fernando Pérez dan William Stein tentang sejarah notebook mereka.
R Markdown dan Jupyter Notebook sama-sama menghadirkan alur kerja yang dapat direproduksi, merajut kode, keluaran, dan teks dalam satu dokumen, mendukung widget interaktif, dan mengekspor ke berbagai format.
Namun, keduanya juga berbeda: yang pertama berfokus pada eksekusi batch yang dapat direproduksi, representasi teks biasa, kendali versi, keluaran produksi, serta menawarkan editor dan alat yang sama dengan yang Anda gunakan untuk skrip R. Yang kedua berfokus pada keluaran inline bersama kode, caching keluaran lintas sesi, berbagi kode dan keluaran dalam satu berkas. Notebook menekankan model eksekusi interaktif. Notebook tidak menggunakan representasi teks biasa, melainkan representasi data terstruktur, seperti JSON.
Semua ini menjelaskan tujuan aplikasi notebook RStudio: menggabungkan semua keunggulan R Markdown dengan hal-hal baik yang ditawarkan computational notebook.
Untuk mempelajari lebih lanjut cara bekerja dengan R notebook dan perbedaan tepat antara Jupyter dan R Markdown notebook dalam hal berbagi notebook, manajemen proyek, kendali versi, dan lainnya, lihat tulisan DataCamp Jupyter dan R: Notebooks dengan R.
Tentu saja, ada lebih banyak notebook yang bisa Anda pertimbangkan saat mulai mendalami data science. Dalam beberapa tahun terakhir, banyak alternatif baru hadir untuk ilmuwan data dan penggemar data science: bukan hanya Beaker Notebook, Apache Zeppelin, Spark Notebook, DataBricks Cloud, dan sebagainya, tetapi juga alat lain seperti Rodeo IDE atau nteract yang juga membuat analisis data science Anda interaktif dan dapat direproduksi. Perlu dicatat bahwa nteract berbeda dari alat lain yang disebutkan di sini karena memanfaatkan arsitektur Jupyter, seperti protokol dan formatnya.
Dan notebook tampaknya akan terus bertahan. Baru-baru ini, generasi berikutnya dari Jupyter Notebook diperkenalkan ke komunitas: JupyterLab. Aplikasi Notebook ini tidak hanya mendukung Notebook tetapi juga pengelola berkas, editor teks, emulator terminal, pemantau proses Jupyter yang berjalan, manajer cluster IPython, dan pager untuk menampilkan bantuan.
Anda mungkin berpikir ini bukan hal baru; Jupyter Notebook juga memiliki semua hal tersebut. Namun, JupyterLab memungkinkan Anda memanfaatkan semua blok bangunan komputasi interaktif ini dengan cara-cara baru.
Baca selengkapnya di sini.
Perangkat alat yang kaya dari Jupyter Notebook berkembang secara organik dan didorong oleh kebutuhan pengguna dan pengembang. JupyterLab adalah arsitektur generasi berikutnya untuk mendukung semua alat ini, tetapi dengan UI yang fleksibel dan responsif, menawarkan tata letak yang dapat dikendalikan pengguna untuk memadukan alat-alat tersebut.
Evolusi proyek dan “Big Split” yang menyertainya menjadi dasar untuk memahami perbedaan sejati antara keduanya. Namun, karena keduanya saling terkait, Anda terkadang akan ragu apa yang termasuk ke dalam apa.
Bagian berikut akan membahas beberapa fitur yang termasuk dalam ekosistem IPython atau Project Jupyter.
Silakan pilih jawaban yang tepat dan pelajari lebih lanjut tentang setiap fitur!
Walaupun kernel kini tampil menonjol dalam Aplikasi Jupyter Notebook, alat pertama yang pernah menggunakan kernel dan protokol penuh adalah Qt console, yang dikembangkan sebelum Notebook. Kini, kernel dimanfaatkan secara fleksibel oleh Notebook, baik secara historis maupun arsitektural, dan merupakan fitur Jupyter, bukan Notebook. Ini berarti kernel jauh lebih dari sekadar fitur: mereka adalah abstraksi inti arsitektur Jupyter, dan digunakan oleh alat non-notebook, seperti text console, Qt console, Thebe dari O’Reilly, alat Kernel Gateway, editor hydrogen milik nteract. Terakhir, di JupyterLab, kernel juga dapat dihubungkan ke apa saja mulai dari notebook hingga web console bahkan berkas teks.
Kernel adalah program yang menjalankan dan mengintrospeksi kode pengguna: ia menyediakan komputasi dan komunikasi dengan antarmuka frontend, seperti notebook. Aplikasi Jupyter Notebook memiliki tiga kernel utama: kernel IPython, IRkernel, dan IJulia.
Karena nama “Jupyter” terinspirasi oleh bahasa terbuka utama untuk sains (Julia, Python, dan R), ini tidak terlalu mengejutkan. Kernel IPython dikelola oleh tim Jupyter, sebagai hasil evolusi proyek.
Namun, Anda juga dapat menjalankan banyak bahasa lain, seperti Scala, JavaScript, Haskell, Ruby, dan banyak lagi di Aplikasi Jupyter Notebook. Itu adalah kernel yang dikelola komunitas.
Menerapkan notebook adalah sesuatu yang biasanya akan Anda temukan atau telusuri saat bekerja dengan Jupyter Notebook. Ada cukup banyak paket yang akan membantu Anda menerapkan notebook dan yang merupakan bagian dari ekosistem Jupyter.
Berikut beberapa di antaranya:
docker-stacks akan berguna saat Anda membutuhkan tumpukan aplikasi Jupyter dan kernel sebagai container Docker.ipywidgets menyediakan widget HTML & JavaScript interaktif (seperti slider, kotak centang, kotak teks, bagan, dll.) untuk arsitektur Jupyter yang menggabungkan kontrol frontend terhubung ke kernel Jupyter.jupyter-drive memungkinkan IPython menggunakan Google Drive untuk manajemen berkas.jupyter-sphinx-theme untuk menambahkan tema Jupyter Sphinx ke notebook Anda. Ini akan memudahkan pembuatan dokumentasi yang cerdas dan indah.kernel_gateway adalah server web yang mendukung berbagai mekanisme untuk menjalankan dan berkomunikasi dengan kernel Jupyter. Lihat di sini untuk beberapa kasus penggunaan di mana paket ini berguna.nbviewer untuk berbagi notebook Anda. Lihat galerinya di sini.tmpnb untuk membuat server Jupyter Notebook sementara menggunakan container Docker. Coba sendiri di sini.traitlets adalah kerangka kerja yang memungkinkan kelas Python memiliki atribut dengan pemeriksaan tipe, nilai bawaan yang dihitung secara dinamis, dan callback ‘on change’. Anda juga dapat menggunakan paket ini untuk keperluan konfigurasi, memuat nilai dari berkas atau argumen baris perintah. traitlets menjadi penggerak sistem konfigurasi IPython dan Jupyter serta API deklaratif dari widget interaktif IPython.IPython dapat diadaptasi untuk penggunaan system shell dengan shell escape: baris yang diawali dengan ! diteruskan langsung ke system shell. Misalnya, !ls akan menjalankan ls di direktori saat ini. Anda dapat menugaskan hasil perintah sistem ke variabel Python dengan sintaks myfiles=!ls. Namun, jika Anda ingin menampilkan hasil fungsi ls secara eksplisit sebagai daftar string tanpa menugaskannya ke variabel, gunakan dua tanda seru (!!ls) atau perintah magic %sx tanpa penugasan.
# Assign the result to `ls`
ls = !ls
# Explicit `ls`
!!ls
# Or with magics
%sx
# Assign magics result
ls = %sx
Perhatikan bahwa perintah !! tidak dapat ditugaskan ke variabel, tetapi hasil dari magic (selama mengembalikan nilai) dapat ditugaskan ke variabel.
IPython juga memungkinkan Anda memperluas nilai variabel Python saat melakukan panggilan sistem: cukup bungkus variabel atau ekspresi Anda dengan kurung kurawal ({}). Juga, dalam perintah shell dengan ! atau !!, variabel Python apa pun yang diawali $ akan diekspansi. Pada potongan kode di bawah, Anda akan melihat bahwa Anda melakukan echo atribut argv dari variabel sys. Perhatikan juga Anda bisa menggunakan sintaks $/$$ untuk variabel Python dari keluaran sistem, yang nantinya dapat digunakan untuk skrip lanjutan.
Untuk meneruskan karakter $ literal ke shell, gunakan ganda $$. Anda memerlukan $ literal ini jika ingin mengakses variabel shell dan lingkungan seperti $PATH:
# Import and initialize
import math
x = 4
# System call with variable
!echo {math.factorial(x)}
# Expand a variable
!echo $sys.argv
# Use $$ for a literal $
!echo "A system variable: $$HOME"
Baca lebih lanjut di sini.
Perhatikan bahwa selain IPython, ada juga kernel lain yang memiliki sintaks khusus untuk memastikan baris dieksekusi sebagai perintah shell! Ini bukan benar-benar “magics” dalam arti paling ketat karena mereka dapat mengimplementasikannya dengan nama apa pun yang mereka inginkan dan bisa sama sekali berbeda (dan lebih atau kurang kaya) dibandingkan magic IPython.
Selain itu, ada alias yang dapat Anda definisikan untuk perintah sistem. Alias ini pada dasarnya adalah pintasan untuk perintah bash. Satu alias adalah tuple: (“showTheDirectory”, “ls”). Jalankan %alias? untuk informasi lebih lanjut!
Tip: gunakan %rehashx untuk memuat seluruh $PATH Anda sebagai alias IPython.
Jika Anda telah membaca Panduan Definitif Jupyter Notebook dari DataCamp atau sudah bekerja dengan Jupyter, Anda mungkin sudah mengenal “magic commands”. Magics biasanya terdiri dari elemen sintaks yang tidak valid dalam bahasa dasarnya dan semacam kata yang menyiratkan perintah. Di balik layar, fungsi magic sebenarnya adalah fungsi Python.
Kernel IPython menggunakan, seperti yang mungkin sudah Anda ketahui, elemen sintaks % karena itu bukan operator unari yang valid di Python. Namun, baris yang dimulai dengan %% menandakan cell magic: baris ini mengambil argumen tidak hanya sisa baris saat ini, tetapi juga semua baris di bawahnya dalam blok eksekusi saat ini. Cell magic pada kenyataannya dapat melakukan modifikasi sewenang-wenang pada input yang mereka terima, yang bahkan tidak harus berupa kode Python yang valid. Mereka menerima seluruh blok sebagai satu string.
Magics spesifik untuk dan disediakan oleh kernel serta dirancang untuk membuat pekerjaan dan pengalaman Anda di dalam Jupyter Notebook jauh lebih interaktif. Ketersediaan magic command pada kernel tertentu bergantung pada pengembang kernel dan pada setiap kernel. Anda sudah melihatnya: magics adalah fitur kernel.
Saat Anda menggunakan backend Python untuk Jupyter Notebook, yaitu IPython, yang juga dikenal sebagai kernel, Anda mungkin ingin menggunakan trik berikut untuk mendapatkan akses ke fungsionalitas yang membuat pemrograman Anda lebih cepat, lebih mudah, dan lebih interaktif. Perhatikan bahwa daftar berikut tidak dimaksudkan lengkap. Lihat daftar magic command bawaan ini untuk ikhtisar lengkap.
Salah satu fitur utama kernel IPython adalah kemampuan menampilkan plot yang merupakan keluaran dari menjalankan sel kode. Kernel dirancang bekerja mulus dengan pustaka visualisasi data matplotlib untuk menyediakan fungsionalitas ini. Untuk menggunakannya, gunakan perintah magic %matplotlib.
Dengan demikian, plot Anda secara bawaan akan ditampilkan di jendela terpisah. Selain itu, Anda juga dapat menentukan backend, seperti inline atau qt, sehingga keluaran perintah plotting akan ditampilkan inline atau melalui backend GUI yang berbeda. Anda dapat membaca lebih lanjut di sini.
Perintah magic kernel juga menyediakan cara menavigasi sistem berkas Anda. Magic %cd dan %bookmark dapat digunakan untuk mengubah direktori atau menandai folder agar akses ke direktori yang sering digunakan lebih cepat.
Selanjutnya, Anda juga dapat menggunakan magic untuk memanggil debugger Python %pdb setiap kali ada pengecualian yang tidak tertangkap. Ini akan menuntun Anda melalui bagian kode yang memicu pengecualian, sehingga memungkinkan Anda dengan cepat menemukan sumber bug.
Anda juga dapat menggunakan perintah magic %run dengan opsi -d untuk menjalankan skrip di bawah kendali debugger Python. Ini akan otomatis menyiapkan breakpoint awal untuk Anda. Terakhir, Anda juga dapat menggunakan magic %debug untuk akses debugger yang lebih mudah.
Anda dapat menggunakan magic %load_ext untuk memuat ekstensi IPython berdasarkan nama modulnya. Ekstensi IPython adalah modul Python yang memodifikasi perilaku shell: ekstensi dapat mendaftarkan magics, mendefinisikan variabel, dan secara umum memodifikasi namespace pengguna untuk menyediakan fitur baru yang dapat digunakan dalam sel kode. Berikut beberapa contohnya:
%load_ext oct2py.ipython untuk memanggil M-file dan fungsi Octave dari Python secara mulus,%load_ext rpy2.ipython untuk menggunakan antarmuka ke R yang berjalan tertanam dalam proses Python,%load_ext Cython untuk menggunakan kompiler Python ke C,sympy.init_printing() untuk mencetak objek Sympy Basic dengan indah secara otomatis, dan%load_ext fortranmagic.… Masih banyak lagi! Anda dapat membuat dan mendaftarkan ekstensi IPython Anda sendiri dan mendaftarkannya di PyPi: ini juga berarti ada banyak ekstensi dan magic buatan pengguna lainnya! Salah satu contohnya adalah ipython_unittest, namun lihat juga Indeks Ekstensi ini.
Salah satu ekstensi lain yang patut Anda perhatikan adalah sparkmagic, seperangkat alat untuk bekerja secara interaktif dengan cluster Spark jarak jauh melalui Livy, server REST Spark, di Jupyter Notebook. Pustaka sparkmagic menyediakan magic %%spark yang dapat Anda gunakan untuk dengan mudah menjalankan kode ke cluster Spark jarak jauh dari notebook IPython biasa.
# Load in sparkmagic
%load_ext sparkmagic.magics
# Set the endpoint
%manage_spark
# Ask for help
%spark?
Kunjungi di sini untuk lebih banyak contoh bagaimana Anda dapat menggunakan magic ini untuk bekerja dengan cluster Spark secara interaktif.
Perhatikan bahwa IPython memiliki dua magic lain selain %load_ext yang memungkinkan Anda mengelola ekstensi dari dalam Jupyter Notebook: %reload_ext dan %unload_ext untuk memuat ulang, mengimpor ulang, dan memuat ekstensi serta untuk membongkar ekstensi.
Namun, pada bahasa lain, elemen sintaks dalam magic command mungkin memiliki makna. Kernel R, IRKernel, tidak memiliki sistem magics. Untuk menjalankan perintah bash, misalnya, Anda akan menggunakan fungsi R seperti system() untuk memanggil perintah OS. Contohnya adalah system("head -5 *.csv", intern=TRUE). Perhatikan bahwa dengan menyertakan argumen intern, Anda menyatakan ingin menangkap keluaran perintah sebagai vektor karakter di R. Untuk menampilkan input markdown, Anda menggunakan display_markdown(), yang menerima kode Markdown sebagai vektor karakter. Demikian pula, Kernel Julia IJulia juga tidak menggunakan “magics”. Alih-alih, sintaks lain untuk mencapai tujuan yang sama lebih alami di Julia, berfungsi di lingkungan di luar sel kode IJulia, dan seringkali lebih kuat. Namun, pengembang kernel IJulia memastikan bahwa kapan pun Anda memasukkan magic command IPython dalam sel kode IJulia, Anda akan melihat keluaran bantuan yang menjelaskan cara mencapai efek serupa di Julia jika memungkinkan.
Misalnya, analog dari %load IPython di IJulia adalah IJulia.load().
Di sisi lain, ada kernel seperti kernel Scala IScala yang mendukung magic command, mirip IPython. Namun, kumpulan magics-nya berbeda karena harus menyesuaikan spesifik Scala dan JVM. Magic command terdiri dari tanda persen % diikuti pengenal dan masukan opsional untuk sebuah magic. Beberapa magic yang paling menonjol adalah:
# Type Information
%type 1
# Library Management
%libraryDependencies
%update
Seperti yang Anda baca di atas, pustaka sparkmagic juga menyediakan serangkaian kernel Scala dan Python yang memungkinkan Anda terhubung otomatis ke cluster Spark jarak jauh, menjalankan kode dan kueri SQL, mengelola server Livy dan konfigurasi job Spark, serta menghasilkan visualisasi otomatis. Dan itu tanpa membutuhkan kode apa pun!
Misalnya, Anda dapat dengan mudah mengeksekusi kueri SparkSQL dengan %%sql atau mengakses informasi aplikasi Spark dan log melalui magic %%info.
Jika Anda bekerja dengan kernel lain dan bertanya-tanya apakah Anda dapat menggunakan magic command, ada baiknya diketahui bahwa beberapa kernel dibangun di atas proyek metakernel dan dalam banyak kasus akan menggunakan magic yang sama seperti yang juga Anda temukan di kernel IPython. Anda dapat menemukan daftar magic metakernel di sini. Metakernel adalah templat kernel Jupyter/IPython yang menyertakan fungsi magic inti.
Beberapa contoh:
matlab_kernel,octave_kernel,java9_kernel,wolfram_kernel,Ini berarti bahwa, misalnya, saat Anda menggunakan kernel MATLAB, Anda akan memiliki magic berikut yang tersedia:
Available line magics:
%cd %connect_info %download %edit %get %help %html %install %install_magic %javascript %kernel %kx %latex %load %ls %lsmagic %magic %parallel %plot %pmap %px %python %reload_magics %restart %run %set %shell %spell
Available cell magics:
%%debug %%file %%help %%html %%javascript %%kx %%latex %%processing %%px %%python %%shell %%show %%spell
Jika Anda melihat potongan yang dicetak di atas, Anda akan melihat beberapa magic command tersebut terasa sangat familiar. Bagi yang belum terlalu mengenal magics, bandingkan potongan di atas dengan magics yang tersedia secara bawaan di kernel IPython dan Anda akan melihat beberapa magic yang sama:
Available line magics:
%alias %alias_magic %autocall %automagic %autosave %bookmark %cat %cd %clear %colors %config %connect_info %cp %debug %dhist %dirs %doctest_mode %ed %edit %env %gui %hist %history %killbgscripts %ldir %less %lf %lk %ll %load %load_ext %loadpy %logoff %logon %logstart %logstate %logstop %ls %lsmagic %lx %macro %magic %man %matplotlib %mkdir %more %mv %notebook %page %pastebin %pdb %pdef %pdoc %pfile %pinfo %pinfo2 %popd %pprint %precision %profile %prun %psearch %psource %pushd %pwd %pycat %pylab %qtconsole %quickref %recall %rehashx %reload_ext %rep %rerun %reset %reset_selective %rm %rmdir %run %save %sc %set_env %store %sx %system %tb %time %timeit %unalias %unload_ext %who %who_ls %whos %xdel %xmode
Available cell magics:
%%! %%HTML %%SVG %%bash %%capture %%debug %%file %%html %%javascript %%js %%latex %%perl %%prun %%pypy %%python %%python2 %%python3 %%ruby %%script %%sh %%svg %%sx %%system %%time %%timeit %%writefile
Pada intinya, Anda dapat menggunakan satu pertanyaan untuk membedakan magics mana yang spesifik untuk IPython dan mana yang dapat digunakan di kernel lain: apakah fungsionalitas ini spesifik untuk Python atau hal umum yang juga dapat digunakan dalam bahasa yang sedang Anda gunakan?
Misalnya, %pdb atau Python Debugger atau %matplotlib adalah sesuatu yang spesifik untuk Python yang tidak masuk akal saat Anda bekerja dengan kernel JavaScript. Namun, mengganti direktori dengan %cd adalah hal yang sangat umum dan seharusnya berfungsi di bahasa apa pun, karena ini perintah yang “umum”. Jadi, kemungkinan besar ini adalah magic yang dapat digunakan di kernel lain. Tentu saja, Anda tetap perlu mengetahui apakah kernel Anda menggunakan magics.
Mengonversi dan memformat notebook adalah fitur yang akan Anda temukan di ekosistem Jupyter. Dua alat yang biasanya Anda temukan untuk tugas ini adalah nbconvert dan nbformat.
Anda dapat menggunakan yang pertama untuk mengonversi notebook ke berbagai format lain untuk menyajikan informasi dalam format yang familier, memublikasikan riset dan menyematkan notebook dalam makalah, berkolaborasi dengan orang lain, dan berbagi konten dengan audiens yang lebih luas.
Yang terakhir pada dasarnya berisi format Jupyter Notebook dan merupakan kunci untuk memahami bahwa berkas notebook adalah dokumen JSON sederhana yang berisi: metadata (seperti kernel atau info bahasa), versi format notebook (mayor dan minor), serta sel-sel tempat semua teks, kode, dan sebagainya disimpan.
Menyimpan dan memuat notebook adalah fitur dari Aplikasi Jupyter Notebook. Anda dapat memuat notebook, yang disimpan sebagai berkas dengan ekstensi nama .ipynb, yang dibuat orang lain dengan mengunduh dan membuka berkas tersebut di aplikasi Jupyter. Lebih spesifik, Anda dapat membuat notebook baru lalu memilih membuka berkas dengan mengeklik tab “File”, mengeklik “Open” dan memilih notebook yang Anda unduh.
Sebaliknya, Anda juga dapat menyimpan notebook Anda sendiri dengan mengeklik tab “File” yang sama dan memilih “Download as” untuk mendapatkan berkas notebook Anda sendiri atau Anda juga dapat memilih untuk menyimpan berkas dan menetapkan checkpoint. Ini sangat berguna saat Anda ingin melakukan kendali versi sederhana dan mungkin kembali ke versi lebih awal dari notebook. Tentu saja, modifikasi Anda disimpan otomatis setiap beberapa menit, jadi tidak selalu perlu melakukan tindakan ini secara eksplisit.
Perhatikan bahwa Anda juga dapat memilih untuk tidak menyimpan perubahan apa pun ke notebook asli dengan membuat salinannya dan menyimpan semua perubahan pada salinan tersebut!
Memilih beberapa sel, mengganti tampilan keluaran sel, menyisipkan sel baru, dan sebagainya. Untuk semua tindakan ini, Anda memiliki shortcut keyboard yang merupakan bagian dari Jupyter Notebook. Anda dapat menemukan daftar shortcut keyboard di menu atas: buka tab “Help” dan pilih “Keyboard Shortcuts”.
Selain itu, dukungan multi-kursor adalah fitur yang akan Anda temukan di Jupyter Notebook!
Jaringan komputasi paralel dulunya bagian dari proyek IPython, tetapi sejak versi 4.0, menjadi paket mandiri bernama ipyparallel. Paket ini pada dasarnya adalah kumpulan skrip CLI untuk mengendalikan cluster bagi Jupyter.
Meski telah dipisah, ini tetap komponen kuat dari ekosistem IPython yang sering terlewat; Kuat karena alih-alih menjalankan satu kernel Python, ia memungkinkan Anda memulai banyak kernel terdistribusi di banyak mesin.
Kasus penggunaan khas ipyparallel misalnya saat Anda perlu menjalankan model berkali-kali untuk memperkirakan distribusi keluarannya atau bagaimana variasinya terhadap parameter masukan. Ketika setiap run model independen, Anda dapat mempercepat proses dengan menjalankannya secara paralel di banyak komputer dalam sebuah cluster. Pikirkan tentang pelatihan model terdistribusi atau simulasi.
Fitur ini merupakan bagian dari ekosistem Jupyter: Anda memiliki Jupyter Console dan aplikasi terminal Jupyter. Namun, sejak awal, IPython digunakan untuk menyebut terminal baris perintah interaktif asli untuk Python. Ia menawarkan lingkungan read-eval-print loop (REPL) yang ditingkatkan, sangat cocok untuk komputasi ilmiah. Ini adalah standar sebelum 2011 ketika alat Notebook diperkenalkan dan mulai menawarkan antarmuka web modern dan kuat untuk Python.
Selanjutnya, Anda juga memiliki konsol IPython, yang memulai dua proses: shell terminal IPython asli dan profil atau kernel bawaan yang dijalankan jika tidak dinyatakan lain. Secara bawaan, ini adalah Python. Konsol IPython kini sudah usang (deprecated) dan jika Anda ingin memulainya, Anda perlu menggunakan Jupyter Console, yang merupakan frontend konsol berbasis terminal untuk kernel Jupyter. Kode ini didasarkan pada terminal IPython proses tunggal. Jupyter Console menyediakan pengalaman sisi-klien interaktif IPython di terminal, tetapi dengan kemampuan terhubung ke kernel Jupyter mana pun, bukan hanya IPython. Ini memungkinkan Anda menguji kernel Jupyter apa pun yang terpasang di terminal, tanpa perlu menyalakan Notebook penuh. Console memungkinkan interaksi berbasis terminal dengan kernel Jupyter lain seperti IJulia, IRKernel.
Terakhir, Aplikasi Jupyter Notebook juga memiliki Aplikasi Terminal: terminal bash sederhana yang berjalan di peramban Anda. Anda dapat dengan mudah menemukannya saat memulai aplikasi dan memilih terminal baru dari menu dropdown.
Qt console dulunya bagian dari proyek IPython, tetapi kini telah pindah ke proyek Jupyter. Ini adalah aplikasi ringan yang sebagian besar terasa seperti terminal tetapi menyediakan sejumlah peningkatan yang hanya mungkin di GUI, seperti figur inline, pengeditan multi-baris yang benar dengan highlighting sintaks, call tip grafis, dan banyak lagi. Qt console dapat menggunakan kernel Jupyter apa pun.
Tulisan blog hari ini merupakan pelengkap Panduan Definitif DataCamp dan membahas sejarah computational notebook lebih rinci, bersama beberapa fitur utama dari proyek IPython dan Jupyter sehingga Anda dapat lebih memahami evolusi dan perbedaan keduanya. Tujuannya adalah melihat bahwa pembedaan keduanya terkadang sulit jika Anda tidak mempertimbangkan perspektif historis dari kedua proyek. Dalam beberapa kasus, ada zona abu-abu, sebuah “di antara”, yang tidak mudah diklasifikasikan.
blogs
Hugo Bowne-Anderson
13 mnt
blogs
David Woods
13 mnt

blogs
Javier Canales Luna
14 mnt
blogs
Dario Radečić
15 mnt