当前位置:   article > 正文

Hadoop+Spark大数据技术(测试)

Hadoop+Spark大数据技术(测试)

1、九九乘法表

在下面的单元格中编写Scala程序,输出上三角形的九九乘法表,并运行。

  1. for (i <- 1 to 9 reverse) {
  2. for (j <- 1 to i) {
  3. print(s"$j x $i = ${i * j}\t")
  4. }
  5. println()
  6. }

2、单词计数

在下面的若干单元格中编写Spark程序,对test.txt中的单词计数,并输出统计结
果。
test.txt的内容为下面三行:
Life would be too smooth if it had no rubs in it
Life is the art of drawing sufficient conclusions form insufficient premises
The wealth of the mind is the only wealth

  1. import org.apache.spark.sql.SparkSession
  2. object WordCount {
  3. def main(args: Array[String]): Unit = {
  4. val spark = SparkSession.builder()
  5. .appName("WordCount")
  6. .getOrCreate()
  7. val textFile = spark.sparkContext.textFile("test.txt")
  8. val words = textFile.flatMap(_.split("\\W+"))
  9. val wordCounts = words.map(word => (word, 1)).reduceByKey(_ + _)
  10. wordCounts.foreach(println)
  11. spark.stop()
  12. }
  13. }
  14. // 程序入口点
  15. WordCount.main(Array())

3、DataFrame

在下面的若干单元格中编写Spark程序,利用grade.csv创建Spark SQL DataFrame。

header参数:用于指示csv文件中是否包含标题行。如果设置为True,则SPamk会券试将第一行作为列名使用。

inferSchema参数:如果设置为True,Spark会自动尝试推断每列的数据类型。

(1)统计行数。
(2)筛选Python,Java,scala都不低手85的行。

(3)分班级统计各门课程的平均分。

  1. import org.apache.spark.sql.SparkSession
  2. import org.apache.spark.sql.functions._
  3. object GradeAnalysis {
  4. def main(args: Array[String]): Unit = {
  5. val spark = SparkSession.builder()
  6. .appName("GradeAnalysis")
  7. .getOrCreate()
  8. // 加载CSV文件并创建DataFrame
  9. val gradeDF = spark.read
  10. .option("header", "true") // 指示CSV文件中包含标题行
  11. .option("inferSchema", "true") // 自动推断列的数据类型
  12. .csv("grade.csv")
  13. // (1) 统计行数
  14. val rowCount = gradeDF.count()
  15. println(s"Total number of rows: $rowCount")
  16. // (2) 筛选Python, Java, Scala成绩都不低于85的行
  17. val highAchievers = gradeDF.filter(
  18. (col("Python") >= 85) &&
  19. (col("Java") >= 85) &&
  20. (col("Scala") >= 85)
  21. )
  22. println("Students with grades above 85 in all three subjects:")
  23. highAchievers.show()
  24. // (3) 分班级统计各门课程的平均分
  25. val classAverages = gradeDF.groupBy("Class")
  26. .agg(
  27. mean("Python").as("Python_Avg"),
  28. mean("Java").as("Java_Avg"),
  29. mean("Scala").as("Scala_Avg")
  30. )
  31. println("Class averages for each subject:")
  32. classAverages.show()
  33. spark.stop()
  34. }
  35. }

4、Graphx属性图

在下面的若干单元格中编写Spark程序,利用下图创建Graphx属性图,并完成:

(1)输出图的顶点信息和边信息。

(2)找出属性为PI的边 。

(3)找出属性为professor的顶点。

  1. import org.apache.spark.{SparkConf, SparkContext}
  2. import org.apache.spark.graphx.{Edge, Graph, VertexId}
  3. import org.apache.spark.rdd.RDD
  4. object GraphXExample {
  5. def main(args: Array[String]): Unit = {
  6. val conf = new SparkConf().setAppName("GraphX Example")
  7. val sc = new SparkContext(conf)
  8. // 假设的顶点数据
  9. val vertices: RDD[(VertexId, (String, String))] = sc.parallelize(Seq(
  10. (1L, ("Alice", "student")),
  11. (2L, ("Bob", "student")),
  12. (3L, ("Charlie", "professor"))
  13. // 添加更多顶点...
  14. ))
  15. // 假设的边数据
  16. val edges: RDD[Edge[(String, String)]] = sc.parallelize(Seq(
  17. Edge(1L, 3L, ("enrolled", "CS101")),
  18. Edge(2L, 3L, ("enrolled", "CS102")),
  19. // 添加更多边...
  20. ))
  21. // 创建GraphX的Graph对象
  22. val graph = Graph(vertices, edges)
  23. // (1) 输出图的顶点信息和属性
  24. println("Vertices and their attributes:")
  25. graph.vertices.collect().foreach {
  26. case (vid, (name, attr)) => println(s"Vertex $vid: Name = $name, Attribute = $attr")
  27. }
  28. // (2) 输出属性为"enrolled"的边
  29. println("\nEdges with 'enrolled' attribute:")
  30. graph.edges.filter(e => e.attr._1 == "enrolled").collect().foreach {
  31. case Edge(src, dst, attr) => println(s"Edge from Vertex $src to $dst with Attribute = $attr")
  32. }
  33. // (3) 输出属性为"professor"的顶点
  34. println("\nVertices with 'professor' attribute:")
  35. graph.vertices.filter { case (_, (_, attr)) => attr == "professor" }.collect().foreach {
  36. case (vid, (_, _)) => println(s"Vertex $vid is a professor")
  37. }
  38. sc.stop()
  39. }
  40. }
  41. // 运行程序
  42. GraphXExample.main(Array())

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/746000
推荐阅读
相关标签
  

闽ICP备14008679号