Bạn hãy tải tệp bài tập wikipedia.zip từ liên kết bạn đã cung cấp và giải nén nó. Sau đó, bạn có thể làm theo các bước sau để hoàn thành bài tập:


1. Thiết lập môi trường Spark

Chúng ta cần thiết lập một SparkContext để làm việc với Spark. Để làm điều này, chúng ta cần tạo một SparkConf và chỉ định rằng chúng ta sẽ chạy Spark ở chế độ local.

scala
CopyEdit
import org.apache.spark.{SparkConf, SparkContext}

val conf = new SparkConf()
  .setAppName("Wikipedia Analysis")
  .setMaster("local")
val sc = new SparkContext(conf)


2. Đọc dữ liệu Wikipedia

Dữ liệu Wikipedia sẽ được đọc vào một RDD[WikipediaArticle]. Tệp WikipediaData.scala trong bài tập đã cung cấp một phương thức parse để chuyển đổi dữ liệu thô thành các đối tượng WikipediaArticle.

scala
CopyEdit
import org.apache.spark.rdd.RDD

val lines = sc.textFile("wikipedia-grading.dat")
val wikiRdd: RDD[WikipediaArticle] = lines.map(WikipediaData.parse)


3. Đếm số lượng bài viết chứa một ngôn ngữ lập trình

Chúng ta sẽ triển khai phương thức occurrencesOfLang để đếm số lượng bài viết đề cập đến một ngôn ngữ lập trình ít nhất một lần.

scala
CopyEdit
def occurrencesOfLang(lang: String, rdd: RDD[WikipediaArticle]): Int = {
  rdd.filter(article => article.text.split(" ").contains(lang)).count().toInt
}


4. Xếp hạng các ngôn ngữ lập trình - Cách 1

Dùng occurrencesOfLang để xếp hạng danh sách các ngôn ngữ lập trình theo số bài viết đề cập đến chúng.

scala
CopyEdit
def rankLangs(langs: List[String], rdd: RDD[WikipediaArticle]): List[(String, Int)] = {
  langs.map(lang => (lang, occurrencesOfLang(lang, rdd)))
       .sortBy(-_._2)
}


5. Xây dựng một chỉ mục ngược (Inverted Index)

Tạo một chỉ mục ánh xạ từ tên ngôn ngữ lập trình đến tập hợp các bài viết có nhắc đến nó.