Scala untuk Kejuruteraan Bahagian Belakang dan Pengaturcaraan Fungsian · Pelajaran

Transformasi dan Tindakan

Pengiraan malas

Pelajaran 2 daripada 413 langkah

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 yet

flatMap

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 pemacu
  • count — bilangan elemen
  • first / take(n) — mengambil sampel baris
  • reduce — menggabungkan menjadi satu nilai
val total = sc.parallelize(1 to 100).reduce(_ + _)
println(total) // 5050 — runs now

Sempit 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)
  • cache untuk menggunakan semula hasil

Seterusnya: Spark SQL.

Percuma untuk bermula

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

  1. RDD dan DataFrames
  2. Transformasi dan Tindakan
  3. Spark SQL
  4. Agregasi
← Kembali ke Scala untuk Kejuruteraan Bahagian Belakang dan Pengaturcaraan Fungsian