九十、Spark-SparkSQL(查询sql)

举报
托马斯-酷涛 发表于 2022/05/26 00:30:02 2022/05/26
【摘要】 textFile文件读取 读取数据展示  代码 package org.example.SQL import org.apache.log4j.{Level, Logger}import org.apache.spark.SparkContextimport org.apache.spark.rdd.RDD...

textFile文件读取

读取数据展示

 代码


  
  1. package org.example.SQL
  2. import org.apache.log4j.{Level, Logger}
  3. import org.apache.spark.SparkContext
  4. import org.apache.spark.rdd.RDD
  5. import org.apache.spark.sql.{DataFrame, SparkSession}
  6. object Test4 { //查询sql
  7. def main(args: Array[String]): Unit = {
  8. Logger.getLogger("org").setLevel(Level.ERROR) //不打印日志
  9. val spark: SparkSession = SparkSession.builder().appName("test4").master("local").getOrCreate()
  10. val sc: SparkContext = spark.sparkContext
  11. val lines = sc.textFile("data/input/person.txt")
  12. val rdd: RDD[person] = lines.map { line => {
  13. val arr: Array[String] = line.split(" ")
  14. person(arr(0).toInt, arr(1), arr(2).toInt)
  15. }
  16. }
  17. import spark.implicits._
  18. val personDF: DataFrame = rdd.toDF() //转换为DataFrame
  19. personDF.printSchema()
  20. personDF.show()
  21. //--------------------SQL----------------------
  22. //注册表名
  23. personDF.createOrReplaceTempView("student")
  24. //查看name字段
  25. spark.sql("select name from student").show()
  26. //查看name和age字段
  27. spark.sql("select name,age from student").show()
  28. //查看所有age和name字段,并将age+1
  29. spark.sql("select name,age,age+1 from student").show()
  30. //过滤age>=25的
  31. spark.sql("select name,age from student where age<25").show()
  32. //统计年龄大于35的人数
  33. spark.sql("select count(*) from student where age>35").show()
  34. //按年龄进行分组并统计相同年龄的人数
  35. spark.sql("select age,count(*) from student group by age").show()
  36. //查询姓名等于张三的
  37. spark.sql("select name from student where name = 'zhangsan' ").show()
  38. }
  39. case class person(id: Int, name: String, age: Int)
  40. }

约束

 数据表

 数据过滤


  
  1. +--------+
  2. | name|
  3. +--------+
  4. |zhangsan|
  5. | lisi|
  6. | wangwu|
  7. | zhaoliu|
  8. | tianqi|
  9. | kobe|
  10. +--------+

  
  1. +--------+---+
  2. | name|age|
  3. +--------+---+
  4. |zhangsan| 20|
  5. | lisi| 29|
  6. | wangwu| 25|
  7. | zhaoliu| 30|
  8. | tianqi| 35|
  9. | kobe| 40|
  10. +--------+---+

  
  1. +--------+---+---------+
  2. | name|age|(age + 1)|
  3. +--------+---+---------+
  4. |zhangsan| 20| 21|
  5. | lisi| 29| 30|
  6. | wangwu| 25| 26|
  7. | zhaoliu| 30| 31|
  8. | tianqi| 35| 36|
  9. | kobe| 40| 41|
  10. +--------+---+---------+

  
  1. +--------+---+
  2. | name|age|
  3. +--------+---+
  4. |zhangsan| 20|
  5. +--------+---+

  
  1. +--------+
  2. |count(1)|
  3. +--------+
  4. | 1|
  5. +--------+

  
  1. +---+--------+
  2. |age|count(1)|
  3. +---+--------+
  4. | 20| 1|
  5. | 40| 1|
  6. | 35| 1|
  7. | 25| 1|
  8. | 29| 1|
  9. | 30| 1|
  10. +---+--------+

  
  1. +--------+
  2. | name|
  3. +--------+
  4. |zhangsan|
  5. +--------+

文章来源: tuomasi.blog.csdn.net,作者:托马斯-酷涛,版权归原作者所有,如需转载,请联系作者。

原文链接:tuomasi.blog.csdn.net/article/details/123975210

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。