当前位置:   article > 正文

Spark SQL结构化数据文件处理_sparksql查看表结构

sparksql查看表结构
  • Spark SQL是Spark中的一个模块,主要用于进行结构化数据的处理。它提供的最核心的编程抽象,就是 DataFrame。
  • DataFrame=RDD+Schema 。 它其实和关系型数据库中的表非常类似,RDD可以认为是表中的数据,Schema是表结构信息。 DataFrame可以通过很多来源进行构建,包括:结构化的数据文件,Hive中的表,外部的关系型数据 库,以及RDD
  • Spark1.3出现的 DataFrame ,Spark1.6出现了 DataSet ,在Spark2.0中两者统一,DataFrame等于 DataSet[Row]

一、DataFrame的创建

1、要使用Spark SQL,首先需要创建一个SpakSession对象,可以通过SparkSession.builder().getOrCreate()方法获取

2、要是使用SpakSession创建DataFrame,可以使用spark.read操作,从不同类型的文件中加载数据创建DataFrame。

代码示例描述
sparkSession.read.json("D:\\bigdata/student.json")读取json格式的文本文件
sparkSession.read.csv("D:\\bigdata/student.json")读取csv格式的文本文件
sparkSession.read.text("D:\\bigdata/student.json")读取text格式的文本文件
sparkSession.read.parquet("D:\\bigdata/student.json")读取parquet格式的文本文件

 代码:

  1. def main(args: Array[String]): Unit = {
  2. val conf = new SparkConf().setMaster("local")
  3. val sparkSession =
  4. SparkSession.builder().appName("SqlDemoScala").config(conf).getOrCreate()
  5. val stuDf = sparkSession.read.json("D:\\bigdata/student.json")
  6. //打印student数据
  7. stuDf.show()
  8. }

二、DataFrame常见操作

2.1、DEL风格操作

  • show() 查看DataFrame中的具体信息,默认显示所有,可以通过参数控制显示多少条数据
  • printSchema:查看dataFrame的Schema信息
  • select():查看DataFrame中选取部分的字段
  1. val stuDf = sparkSession.read.json("D:\\bigdata/student.json")
  2. //默认显示所有数据,可以通过参数控制显示多少条
  3. stuDf.show(2)
  4. stuDf.printSchema();

 

  • filter():实现条件查询,过滤出想要的结果
  • groupBy():对记录进行分组
  • sort():对特定的字段进行排序操作

 代码:

  1. stuDf.filter(stuDf("age")>=19).show();
  2. stuDf.groupBy("age").count().show();
  3. stuDf.sort(stuDf("age").desc).show()

结果:

 排序也可以如下写法,但想要添加隐式转换函数,否则语法报错:

   import sparkSession.implicits._
   stuDf.filter($"age">=19).show()

2.2 、SQL风格操作

DataFrame可以将它看成一个关系型数据表,然后在程序中使用spark.sql()的方式执行sq查看,使用sql风格的前提是要将dataFrame注册成一个临时表

  1. //将DataFrame注册一个临时表
  2. stuDf.createOrReplaceTempView("student")
  3. //使用sql查询临时表中的数据
  4. sparkSession.sql("select age,count(*) as num from student group by age")
  5. .show()
  6. sparkSession.stop()

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

闽ICP备14008679号