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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ