0Pricing
Scala for Backend Engineering & Functional Programming · บทเรียน

Spark SQL

ค้นข้อมูล

Spark SQL เป็นบทเรียน Scala for Backend Engineering & Functional Programming ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Scala for Backend Engineering & Functional Programming และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Scala for Backend Engineering & Functional Programming มีบทเรียนทั้งหมด 4 บทเรียน

Spark SQL คืออะไร

Spark SQL ช่วยให้คุณคิวรีข้อมูลแบบกระจายด้วย SQL มาตรฐานหรือ API ของ DataFrame แบบมีชนิดกำกับ ทั้งสองแบบจะผ่านตัวเพิ่มประสิทธิภาพ Catalyst เดียวกัน จึงมีประสิทธิภาพเหมือนกัน

มุมมองชั่วคราว

หากต้องการเรียกใช้ SQL กับ DataFrame ให้ลงทะเบียน DataFrame เป็นมุมมอง createOrReplaceTempView จะทำให้สามารถคิวรีมุมมองดังกล่าวด้วยชื่อได้ภายในเซสชันปัจจุบัน

val df = Seq(("Alice", 30), ("Bob", 25)).toDF("name", "age")
df.createOrReplaceTempView("people")

การเรียกใช้คิวรี SQL

ใช้ spark.sql พร้อมสตริง SQL โดยจะส่งคืน DataFrame ใหม่ที่คุณสามารถแปลงเพิ่มเติมหรือแสดงผลได้

val adults = spark.sql("SELECT name FROM people WHERE age >= 18")
adults.show()

DSL ของ DataFrame

คิวรีเดียวกันใน DSL แบบมีชนิดกำกับ ออบเจ็กต์ functions มี col การเปรียบเทียบ และนิพจน์ในตัวอีกมากมาย

import org.apache.spark.sql.functions._

val adults = df.filter(col("age") >= 18).select("name")

การเลือกและการตั้งนามแฝง

เลือกคอลัมน์ด้วย select และเปลี่ยนชื่อด้วย as / alias คอลัมน์ที่คำนวณจะใช้นิพจน์ที่ทำงานกับ col

import org.apache.spark.sql.functions._

df.select(
  col("name"),
  (col("age") + 1).as("age_next_year")
).show()

การกรองแถว

where และ filter เป็นคำพ้องความหมายกัน ใช้ && และ || เพื่อรวมเงื่อนไข และใช้ isNull / isNotNull กับข้อมูลที่ขาดหาย

import org.apache.spark.sql.functions._

df.where(col("age") > 20 && col("name").isNotNull).show()

การเรียงลำดับและการจำกัดจำนวน

orderBy ใช้เรียงลำดับ (ใช้ desc สำหรับลำดับจากมากไปน้อย) และ limit ใช้จำกัดจำนวนแถวที่ส่งคืน

import org.apache.spark.sql.functions._

df.orderBy(col("age").desc).limit(5).show()

การรวมข้อมูล

รวม DataFrame สองชุดตามคีย์ด้วย join โดยระบุชนิดการรวม เช่น "inner", "left" หรือ "outer"

val joined = orders.join(customers, Seq("customer_id"), "inner")
joined.show()

ฟังก์ชันในตัว

แพ็กเกจ functions มีตัวช่วยหลายร้อยรายการ ได้แก่ upper, concat, when, round ฟังก์ชันวันที่ และอื่น ๆ

import org.apache.spark.sql.functions._

df.withColumn("name_upper", upper(col("name")))
  .withColumn("category", when(col("age") >= 30, "senior").otherwise("junior"))
  .show()

การอ่านและการเขียนตาราง

Spark SQL อ่านและเขียนข้อมูลได้หลายรูปแบบ Parquet เป็นรูปแบบเชิงคอลัมน์ที่มีประสิทธิภาพ ส่วน saveAsTable จะบันทึกข้อมูลไว้ในคลังข้อมูลเมทา

val data = spark.read.parquet("input.parquet")
data.write.mode("overwrite").parquet("output.parquet")

คิวรีคล้าย SQL ใน Scala ธรรมดา

แอนะล็อกแบบทำงานได้ในตัวเอง: การคิวรีคอลเลกชันในหน่วยความจำด้วยเมธอดของคอลเลกชันจำลองคิวรี SELECT/WHERE ของ Spark SQL

object Main {
  case class Person(name: String, age: Int)
  def main(args: Array[String]): Unit = {
    val people = Seq(Person("Alice", 30), Person("Bob", 25))
    val adults = people.filter(_.age >= 18).map(_.name)
    println(adults.mkString(", "))
  }
}

ตรวจสอบอย่างรวดเร็ว

คุณต้องทำอะไรกับ DataFrame ก่อนคิวรีด้วย spark.sql("SELECT ...")

สรุปทบทวน

คุณได้คิวรีข้อมูลด้วย Spark SQL:

  • ลงทะเบียนมุมมองด้วย createOrReplaceTempView
  • เรียกใช้ SQL ผ่าน spark.sql หรือ DSL ของ DataFrame
  • select, where, orderBy, join
  • ฟังก์ชันในตัวและการรับส่งข้อมูล Parquet

ถัดไป: การรวมข้อมูล

คำถามที่พบบ่อย

บทเรียน “Spark SQL” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “Spark SQL” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Scala for Backend Engineering & Functional Programming ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Scala for Backend Engineering & Functional Programming มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “Spark SQL”

ค้นข้อมูล คุณปฏิบัติ Scala for Backend Engineering & Functional Programming ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Scala for Backend Engineering & Functional Programming หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Scala for Backend Engineering & Functional Programming บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “Spark SQL” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Scala for Backend Engineering & Functional Programming นี้ได้ไหม

ได้ บทเรียน Scala for Backend Engineering & Functional Programming ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. RDD และ DataFrames
  2. การแปลงและการดำเนินการ
  3. Spark SQL
  4. การรวมกลุ่ม
← กลับไปที่ Scala for Backend Engineering & Functional Programming