Transformasi dan Tindakan
Pengiraan malas
Transformasi dan Tindakan ialah pelajaran Scala untuk Kejuruteraan Bahagian Belakang dan Pengaturcaraan Fungsian percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Scala untuk Kejuruteraan Bahagian Belakang dan Pengaturcaraan Fungsian, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Scala untuk Kejuruteraan Bahagian Belakang dan Pengaturcaraan Fungsian merangkumi sejumlah 4 pelajaran.
Dua Jenis Operasi
Operasi Spark terbahagi kepada transformasi (membina dataset baharu, secara tertunda) dan tindakan (mencetuskan pengiraan serta mengembalikan hasil atau menulis output).
Penilaian Tertunda
Transformasi adalah tertunda: transformasi merekodkan perkara yang perlu dilakukan tetapi tidak menjalankan apa-apa. Spark membina graf asiklik terarah (DAG) transformasi dan hanya melaksanakannya apabila tindakan dipanggil.
map dan filter
map mengubah setiap unsur; filter mengekalkan unsur yang sepadan dengan predikat. Kedua-duanya mengembalikan RDD/Dataset baharu dan belum dijalankan.
val nums = sc.parallelize(1 to 10)
val evens = nums.filter(_ % 2 == 0).map(_ * 10)
// nothing computed yetflatMap
flatMap memetakan setiap unsur kepada sifar atau lebih output dan meratakannya — cara klasik untuk memisahkan baris menjadi perkataan.
val lines = sc.parallelize(Seq("hello world", "spark rocks"))
val words = lines.flatMap(_.split(" "))Tindakan Lazim
Tindakan mencetuskan pelaksanaan:
collect— membawa semua hasil ke pemacucount— bilangan elemenfirst/take(n)— mengambil sampel barisreduce— menggabungkan menjadi satu nilai
val total = sc.parallelize(1 to 100).reduce(_ + _)
println(total) // 5050 — runs nowSempit berbanding Lebar
Transformasi sempit (map, filter) tidak memerlukan pemindahan data. Transformasi lebar (groupByKey, reduceByKey, join) mencetuskan shuffle merentasi rangkaian.
reduceByKey
Pada RDD pasangan kunci-nilai, reduceByKey mengagregat nilai bagi setiap kunci. Ia menggabungkan nilai secara setempat sebelum melakukan shuffle, menjadikannya lebih cekap berbanding groupByKey.
val pairs = sc.parallelize(Seq(("a", 1), ("b", 1), ("a", 1)))
val counts = pairs.reduceByKey(_ + _)
// (a, 2), (b, 1)Penyimpanan dalam cache
Jika set data digunakan semula merentasi beberapa tindakan, cache atau persist menyimpannya dalam memori supaya ia tidak dikira semula setiap kali.
val cached = sc.parallelize(1 to 1000).filter(_ % 3 == 0).cache()
println(cached.count())
println(cached.sum())Transformasi DataFrame
DataFrame mempunyai transformasi malas tersendiri: select, where, withColumn, orderBy. Tindakan seperti show dan collect mencetuskannya.
import org.apache.spark.sql.functions._
val adults = df.where(col("age") >= 18)
.withColumn("adult", lit(true))
adults.show()Klasik Pengiraan Perkataan
Kerja Spark yang lazim: pecahkan baris, petakan setiap perkataan kepada satu, kemudian kurangkan mengikut kunci. Hanya collect terakhir yang menjalankan saluran pemprosesan.
val text = sc.textFile("book.txt")
val counts = text.flatMap(_.split(" "))
.map(w => (w, 1))
.reduceByKey(_ + _)
counts.collect().foreach(println)Analogi Malas Scala Asas
Analogi Scala yang lengkap kendiri: paparan malas menangguhkan kerja sehingga dipaksa, mencerminkan pemisahan transformasi dan tindakan dalam Spark.
object Main {
def main(args: Array[String]): Unit = {
val pipeline = (1 to 10).view.filter(_ % 2 == 0).map(_ * 10) // lazy
val result = pipeline.toList // forces evaluation (action)
println(result)
}
}Semakan Pantas
Bilakah Spark sebenarnya melaksanakan rangkaian transformasi map dan filter?
Imbas Kembali
Anda telah mempelajari model pelaksanaan Spark:
- Transformasi adalah malas (
map,filter,flatMap,reduceByKey) - Tindakan mencetuskan kerja (
collect,count,reduce) - operasi sempit berbanding lebar (shuffle)
cacheuntuk menggunakan semula hasil
Seterusnya: Spark SQL.
Pelajari Scala dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 39
- Pelajaran
- 143
Soalan Lazim
Adakah pelajaran “Transformasi dan Tindakan” percuma?
Ya — teks penuh “Transformasi dan Tindakan” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Scala untuk Kejuruteraan Bahagian Belakang dan Pengaturcaraan Fungsian, tingkat taraf kepada CoddyKit PRO. Kursus Scala untuk Kejuruteraan Bahagian Belakang dan Pengaturcaraan Fungsian merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Transformasi dan Tindakan”?
Pengiraan malas Anda berlatih Scala untuk Kejuruteraan Bahagian Belakang dan Pengaturcaraan Fungsian menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Scala untuk Kejuruteraan Bahagian Belakang dan Pengaturcaraan Fungsian?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Scala untuk Kejuruteraan Bahagian Belakang dan Pengaturcaraan Fungsian di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Transformasi dan Tindakan” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Scala untuk Kejuruteraan Bahagian Belakang dan Pengaturcaraan Fungsian ini?
Ya. Setiap pelajaran Scala untuk Kejuruteraan Bahagian Belakang dan Pengaturcaraan Fungsian menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- RDD dan DataFrames
- Transformasi dan Tindakan
- Spark SQL
- Agregasi