Ilmu data menggunakan Spark di Azure HDInsight
Rangkaian topik ini menunjukkan cara menggunakan HDInsight Spark untuk menyelesaikan tugas-tugas data science umum seperti pengisian data, rekayasa fitur, pemodelan, dan evaluasi model. Data yang digunakan adalah sampel himpunan data perjalanan taksi dan tarif NYC 2013. Model yang dibangun meliputi regresi logistik dan linier, hutan acak, dan pohon yang didorong gradien. Topik ini juga menunjukkan cara menyimpan model ini di penyimpanan blob Azure (WASB) dan cara memberi skor dan mengevaluasi performa prediktif mereka. Topik yang lebih canggih mencakup bagaimana model dapat dilatih menggunakan validasi silang dan sweeping hyper-parameter. Topik ringkasan ini juga merujuk pada topik yang menjelaskan cara mempersiapkan kluster Spark yang Anda butuhkan untuk menyelesaikan langkah-langkah dalam walkthrough yang disediakan.
Spark dan MLlib
Spark adalah kerangka kerja pemrosesan paralel sumber terbuka yang mendukung pemrosesan dalam memori untuk meningkatkan performa aplikasi analisis data besar. Mesin pemrosesan Spark dibangun untuk memberikan kecepatan, kemudahan penggunaan, dan analitik canggih. Kemampuan komputasi terdistribusi dalam memori Spark menjadikannya pilihan yang tepat untuk algoritma iteratif yang digunakan dalam pembelajaran mesin dan komputasi grafik. MLlib adalah pustaka pembelajaran mesin Spark yang dapat diskalakan yang memberikan kemampuan pemodelan algoritmik ke lingkungan terdistribusi ini.
HDInsight Spark
HDInsight Spark adalah penawaran Spark sumber terbuka yang diselenggarakan Azure. Ini juga termasuk dukungan untuk Jupyter PySpark notebook pada kluster Spark yang dapat menjalankan kueri interaktif Spark SQL untuk mengubah, memfilter, dan memvisualisasikan data yang disimpan di Azure Blobs (WASB). PySpark adalah Python API untuk Spark. Cuplikan kode yang menyediakan solusi dan menunjukkan plot yang relevan untuk memvisualisasikan data di sini berjalan di Jupyter notebook yang diinstal pada kluster Spark. Langkah-langkah pemodelan dalam topik ini berisi kode yang menunjukkan cara untuk melatih, mengevaluasi, menyimpan, dan mengkonsumsi setiap jenis model.
Penyiapan: Kluster spark dan notebook Jupyter
Langkah-langkah penyiapan dan kode disediakan di panduan ini untuk menggunakan HDInsight Spark 1.6. Namun Jupyter notebook disediakan untuk kluster HDInsight Spark 1.6 dan Spark 2.0. Deskripsi buku catatan dan tautan ke buku catatan disediakan di Readme.md untuk repositori GitHub yang memuatnya. Selain itu, kode di sini dan di notebook tertaut adalah generik dan seharusnya bekerja pada kluster Spark apa pun. Jika Anda tidak menggunakan HDInsight Spark, langkah-langkah penyiapan dan manajemen kluster dapat sedikit berbeda dengan yang ditampilkan di sini. Demi kenyamanan, berikut adalah tautan ke Jupyter notebook untuk Spark 1.6 (untuk dijalankan di kernel pySpark dari server Jupyter Notebook) dan Spark 2.0 (untuk dijalankan di kernel pySpark3 dari server Jupyter Notebook):
Notebool Spark 1.6
Notebook ini akan dijalankan di kernel pySpark dari server Jupyter notebook.
- pySpark-machine-learning-data-science-spark-data-exploration-modeling.ipynb: Menyediakan informasi tentang cara menjalankan eksplorasi data, pemodelan, dan penilaian dengan beberapa algoritme yang berbeda.
- pySpark-machine-learning-data-science-spark-advanced-data-exploration-modeling.ipynb: Menyertakan topik dalam notebook #1, dan pengembangan model menggunakan penyetelan hyperparameter dan validasi silang.
- pySpark-machine-learning-data-science-spark-model-consumption.ipynb: Menunjukkan cara mengoperasionalkan model yang disimpan dengan menggunakan Python pada kluster HDInsight.
Notebook Spark 2.0
Notebook ini akan dijalankan di kernel pySpark3 dari server Jupyter notebook.
- Spark2.0-pySpark3-machine-learning-data-science-spark-advanced-data-exploration-modeling.ipynb: File ini memberikan informasi tentang cara melakukan eksplorasi data, pemodelan, dan penilaian dalam kluster Spark 2.0 menggunakan perjalanan Taksi NYC dan himpunan data tarif yang dijelaskan di sini. Notebook ini mungkin menjadi titik awal yang baik untuk penjelajahan kode cepat yang telah kami sediakan untuk Spark 2.0. Untuk notebook yang lebih rinci menganalisis data Taksi NYC, lihat notebook berikutnya di dalam daftar ini. Lihat catatan berikut di daftar ini yang membandingkan notebook.
- Spark2.0-pySpark3_NYC_Taxi_Tip_Regression.ipynb: File ini menunjukkan cara menjalankan data wrangling (Spark SQL dan operasi dataframe), eksplorasi, pemodelan, dan penilaian menggunakan perjalanan Taksi NYC dan himpunan data tarif yang dijelaskan di sini.
- Spark2.0-pySpark3_Airline_Departure_Delay_Classification.ipynb: File ini menunjukkan cara menjalankan data wrangling (Operasi dataframe dan Spark SQL), eksplorasi, pemodelan, dan penilaian menggunakan himpunan data keberangkatan Penerbangan Tepat waktu yang terkenal dari 2011-2012. Kami mengintegrasikan himpunan data maskapai dengan data cuaca bandara (misalnya, kecepatan angin, suhu, ketinggian, dll.) sebelum pemodelan, sehingga fitur cuaca ini dapat dimasukkan dalam model.
Catatan
Himpunan data maskapai ditambahkan ke notebook Spark 2.0 untuk mengilustrasikan penggunaan algoritme klasifikasi dengan lebih baik. Lihat tautan berikut untuk informasi tentang himpunan data keberangkatan maskapai tepat waktu dan himpunan data cuaca:
Data keberangkatan maskapai tepat waktu: https://www.transtats.bts.gov/ONTIME/
Data cuaca bandara: https://www.ncdc.noaa.gov/
Catatan
Notebook Spark 2.0 pada taksi NYC dan himpunan data keterlambatan penerbangan maskapai dapat memakan waktu 10 menit atau lebih untuk dijalankan (tergantung pada ukuran kluster HDI Anda). Notebook pertama dalam daftar di atas menunjukkan aspek-aspek eksplorasi data, visualisasi, dan pelatihan model ML dalam notebook yang membutuhkan lebih sedikit waktu untuk dijalankan dengan himpunan data sampel NYC yang tidak berfungsi, di mana file taksi dan tarif telah digabung sebelumnya: Spark2.0-pySpark3-machine-learning-data-science-spark-advanced-data-exploration-modeling.ipynb. Notebook ini membutuhkan waktu yang jauh lebih singkat untuk selesai (2-3 menit) dan mungkin menjadi titik awal yang baik untuk dengan cepat menjelajahi kode yang telah kami sediakan untuk Spark 2.0.
Untuk panduan tentang operasionalisasi model Spark 2.0 dan konsumsi model untuk penilaian, lihat dokumen Spark 1.6 tentang konsumsi contohnya yang menguraikan langkah-langkah diperlukan. Untuk menggunakan contoh ini pada Spark 2.0, ganti file kode Python dengan file ini.
Prasyarat
Prosedur berikut ini terkait dengan Spark 1.6. Untuk versi Spark 2.0, gunakan notebook yang diuraikan dan ditautkan sebelumnya.
Anda harus memiliki langganan Azure yang aktif. Jika Anda belum memilikinya, lihat Dapatkan uji coba gratis Azure.
Anda memerlukan kluster Spark 1.6 untuk menyelesaikan walkthrough ini. Untuk membuatnya, lihat instruksi yang diberikan di Memulai: buat Apache Spark di Azure HDInsight. Tipe dan versi kluster ditentukan dari menu Pilih Tipe Kluster.

Catatan
Untuk topik yang menunjukkan cara menggunakan Scala daripada Python untuk menyelesaikan tugas untuk proses data science end-to-end, lihat Data Science menggunakan Scala dengan Spark di Azure.
Peringatan
Tagihan untuk kluster HDInsight dirata-rata per menit, baik Anda menggunakannya maupun tidak. Pastikan untuk menghapus kluster Anda setelah selesai menggunakannya. Lihat cara menghapus kluster HDInsight.
Data Taksi NYC 2013
Data Perjalanan Taksi NYC adalah sekitar 20 GB file comma-separated values (CSV) terkompresi (~ 48 GB tidak dikompresi), terdiri lebih dari 173 juta perjalanan individu dan tarif yang dibayarkan untuk setiap perjalanan. Setiap data perjalanan meliputi lokasi dan waktu penjemputan serta pengantaran, nomor SIM (sopir) anonim, dan nomor medali (id unik taksi). Data ini mencakup semua perjalanan pada tahun 2013 dan disediakan dalam dua himpunan data berikut untuk setiap bulan:
File CSV 'trip_data' berisi detail perjalanan, seperti jumlah penumpang, titik penjemputan dan pengantaran, durasi perjalanan, dan panjang perjalanan. Berikut beberapa sampel rekaman:
medallion,hack_license,vendor_id,rate_code,store_and_fwd_flag,pickup_datetime,dropoff_datetime,passenger_count,trip_time_in_secs,trip_distance,pickup_longitude,pickup_latitude,dropoff_longitude,dropoff_latitude89D227B655E5C82AECF13C3F540D4CF4,BA96DE419E711691B9445D6A6307C170,CMT,1,N,2013-01-01 15:11:48,2013-01-01 15:18:10,4,382,1.00,-73.978165,40.757977,-73.989838,40.7511710BD7C8F5BA12B88E0B67BED28BEA73D8,9FD8F69F0804BDB5549F40E9DA1BE472,CMT,1,N,2013-01-06 00:18:35,2013-01-06 00:22:54,1,259,1.50,-74.006683,40.731781,-73.994499,40.750660BD7C8F5BA12B88E0B67BED28BEA73D8,9FD8F69F0804BDB5549F40E9DA1BE472,CMT,1,N,2013-01-05 18:49:41,2013-01-05 18:54:23,1,282,1.10,-74.004707,40.73777,-74.009834,40.726002DFD2202EE08F7A8DC9A57B02ACB81FE2,51EE87E3205C985EF8431D850C786310,CMT,1,N,2013-01-07 23:54:15,2013-01-07 23:58:20,2,244,.70,-73.974602,40.759945,-73.984734,40.759388DFD2202EE08F7A8DC9A57B02ACB81FE2,51EE87E3205C985EF8431D850C786310,CMT,1,N,2013-01-07 23:25:03,2013-01-07 23:34:24,1,560,2.10,-73.97625,40.748528,-74.002586,40.747868File CSV 'trip_fare' berisi rincian tarif yang dibayarkan untuk setiap perjalanan, seperti jenis pembayaran, jumlah tarif, biaya tambahan dan pajak, tips dan tol, dan jumlah total dibayarkan. Berikut beberapa sampel rekaman:
medallion, hack_license, vendor_id, pickup_datetime, payment_type, fare_amount, surcharge, mta_tax, tip_amount, tolls_amount, total_amount89D227B655E5C82AECF13C3F540D4CF4,BA96DE419E711691B9445D6A6307C170,CMT,2013-01-01 15:11:48,CSH,6.5,0,0.5,0,0,70BD7C8F5BA12B88E0B67BED28BEA73D8,9FD8F69F0804BDB5549F40E9DA1BE472,CMT,2013-01-06 00:18:35,CSH,6,0.5,0.5,0,0,70BD7C8F5BA12B88E0B67BED28BEA73D8,9FD8F69F0804BDB5549F40E9DA1BE472,CMT,2013-01-05 18:49:41,CSH,5.5,1,0.5,0,0,7DFD2202EE08F7A8DC9A57B02ACB81FE2,51EE87E3205C985EF8431D850C786310,CMT,2013-01-07 23:54:15,CSH,5,0.5,0.5,0,0,6DFD2202EE08F7A8DC9A57B02ACB81FE2,51EE87E3205C985EF8431D850C786310,CMT,2013-01-07 23:25:03,CSH,9.5,0.5,0.5,0,0,10.5
Kami telah mengambil sampel 0,1% dari file-file ini dan menggabungkannya dengan file CVS data_perjalanan dan tarif_perjalanan ke dalam satu himpunan data untuk digunakan sebagai himpunan data input untuk walkthrough ini. Kunci unik untuk menggabungkan data_perjalanan dan tarif_perjalanan terdiri dari bidang: medali, surat_izin, dan tanggalwaktu_penjemputan. Setiap rekaman himpunan data berisi atribut berikut yang mewakili perjalanan Taksi NYC:
| Bidang | Deskripsi Singkat |
|---|---|
| medali | Medali taksi anonim (id taksi unik) |
| hack_license | Nomor Lisensi Hackney Carriage Anonim |
| vendor_id | Id vendor taksi |
| rate_code | Tarif taksi NYC |
| store_and_fwd_flag | Simpan dan teruskan bendera |
| pickup_datetime | Tanggal & waktu penjemputan |
| dropoff_datetime | Tanggal & waktu pengantaran |
| pickup_hour | Jam penjemputan |
| pickup_week | Minggu penjemputan dalam setahun |
| weekday | Hari kerja (rentang 1-7) |
| passenger_count | Jumlah penumpang dalam perjalanan taksi |
| trip_time_in_secs | Waktu dalam hitungan detik |
| trip_distance | Jarak perjalanan yang ditempuh dalam mil |
| pickup_longitude | Garis bujur penjemputan |
| pickup_longitude | Garis lintang penjemputan |
| dropoff_longitude | Garis bujur pengantaran |
| dropoff_longitude | Garis lintang pengantaran |
| direct_distance | Jarak langsung antara lokasi penjemputan dan pengantaran |
| payment_type | Jenis pembayaran (tunai, kartu kredit, dll.) |
| fare_amount | Jumlah tarif |
| surcharge | Biaya tambahan |
| mta_tax | Pajak Transportasi Metro MTA |
| tip_amount | Jumlah tip |
| tolls_amount | Jumlah tarif tol |
| total_amount | Jumlah total |
| tipped | Diberi tip (0/1 untuk tidak atau ya) |
| tip_class | Kelas tip (0: $0, 1: $0-5, 2: $6-10, 3: $11-20, 4: > $20) |
Menjalankan kode dari Jupyter notebook pada kluster Spark
Anda dapat meluncurkan Jupyter Notebook dari portal Microsoft Azure. Temukan kluster Spark anda di dasbor dan klik untuk memasukkan halaman manajemen untuk kluster Anda. Untuk membuka notebook yang terkait dengan kluster Spark, klik Dasbor Kluster ->Jupyter Notebook.

Anda juga dapat menelusuri https://CLUSTERNAME.azurehdinsight.net/jupyter untuk mengakses Jupyter Notebook. Ganti bagian CLUSTERNAME dari URL ini dengan nama kluster Anda sendiri. Anda memerlukan kata sandi akun admin Anda untuk mengakses buku catatan.

Pilih PySpark untuk melihat direktori yang berisi beberapa contoh notebook pra-paket yang menggunakan PySpark API. Notebook yang berisi sampel kode untuk rangkaian topik Spark ini tersedia di GitHub
Anda dapat mengunggah notebook langsung dari GitHub ke server Jupyter notebook di kluster Spark Anda. Pada halaman beranda Jupyter Anda, klik tombol Unggah di bagian kanan layar. Ini membuka file explorer. Di sini Anda dapat menempelkan URL GitHub (konten mentah) Notebook dan klik Buka.
Anda akan melihat nama file di daftar file Jupyter Anda dengan tombol Unggah lagi. Klik tombol Unggah ini. Sekarang Anda telah mengimpor notebook. Ulangi langkah-langkah ini untuk mengunggah notebook lain dari walkthrough ini.
Tip
Anda dapat mengklik kanan tautan di browser Anda dan pilih Salin Tautan untuk mendapatkan URL konten mentah GitHub. Anda dapat menempelkan URL ini ke dalam kotak dialog file explorer Unggah Jupyter.
Sekarang Anda bisa:
- Melihat kode dengan mengklik notebook.
- Menjalankan setiap sel dengan menekan SHIFT-ENTER.
- Jalankan seluruh buku catatan dengan mengklik Sel ->Jalankan.
- Menggunakan visualisasi kueri otomatis.
Tip
Kernel PySpark secara otomatis memvisualisasikan output kueri SQL (HiveQL). Anda bisa memilih di antara beberapa tipe visualisasi yang berbeda (Tabel, Pai, Garis, Area, atau Bar) dengan menggunakan tombol menu Jenis di notebook:
