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.

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:

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.

  1. Anda harus memiliki langganan Azure yang aktif. Jika Anda belum memilikinya, lihat Dapatkan uji coba gratis Azure.

  2. 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.

Configure cluster

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:

  1. 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_latitude

    89D227B655E5C82AECF13C3F540D4CF4,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.751171

    0BD7C8F5BA12B88E0B67BED28BEA73D8,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.75066

    0BD7C8F5BA12B88E0B67BED28BEA73D8,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.726002

    DFD2202EE08F7A8DC9A57B02ACB81FE2,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.759388

    DFD2202EE08F7A8DC9A57B02ACB81FE2,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.747868

  2. File 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_amount

    89D227B655E5C82AECF13C3F540D4CF4,BA96DE419E711691B9445D6A6307C170,CMT,2013-01-01 15:11:48,CSH,6.5,0,0.5,0,0,7

    0BD7C8F5BA12B88E0B67BED28BEA73D8,9FD8F69F0804BDB5549F40E9DA1BE472,CMT,2013-01-06 00:18:35,CSH,6,0.5,0.5,0,0,7

    0BD7C8F5BA12B88E0B67BED28BEA73D8,9FD8F69F0804BDB5549F40E9DA1BE472,CMT,2013-01-05 18:49:41,CSH,5.5,1,0.5,0,0,7

    DFD2202EE08F7A8DC9A57B02ACB81FE2,51EE87E3205C985EF8431D850C786310,CMT,2013-01-07 23:54:15,CSH,5,0.5,0.5,0,0,6

    DFD2202EE08F7A8DC9A57B02ACB81FE2,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.

Cluster dashboards

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.

Browse Jupyter Notebooks

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:

Logistic regression ROC curve for generic approach

Langkah berikutnya