栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

SparkSql编程之《SparkSession和DataFrame》

SparkSql编程之《SparkSession和DataFrame》

一、SparkSession

        Spark SQL模块的编程主入口点是SparkSession,SparkSession对象不仅为用户提供了创建Dataframe对象、 读取外部数据源并转化为Dataframe对象以及执行sql查询的API, 还负责记录着用户希望Spark应用如何在Spark集群运行的控制、 调优参数, 是Spark SQL的上下文环境, 是运行的基础。

1、创建SparkSession会话
    //创建sparkSession
    val spark = SparkSession
      .builder()
      .appName("HiveSupport")
      .master("local[*]")
      .getOrCreate()
二、Dataframe 1、数据准备,json文件

项目处新建people.json文件

{"name":"Michael"}
{"name":"Andy", "age":30}
{"name":"Justin", "age":19}
2、创建Dataframe

        读取hdfs文件生成Dataframe。

val df = spark.read.json("input/people.json")
3、Dataframe基础操作

        Dataframe为我们提供了灵活、 强大且底层自带优化的API, 例如select、 where、orderBy、 groupBy、 limit、 union这样的算子操作。

注意:使用Dataframe API时需要隐式转换:import spark.implicits._

下列例子是:name分组计算name的个数并按name增序排列展示出name,age+10,count(name)

//隐式转换
import spark.implicits._
df.select($"name",$"age" + 10).groupBy("name").count().orderBy(df("name").asc).show()
4、Dataframe注册成临时表以及查询临时表

将抽象的Dataframe注册成表,那样就可以像表那样使用和操作,更方便。

//df注册成临时表
df.createOrReplaceTempView("user")
//查询临时表
spark.sql("select * from user").show()
5、Dataframe注册成全局临时表以及查询全局临时表

注册成全局临时表有两种方式:createOrReplaceGlobalTempView和createGlobalTempView

区别在于第一是如果存在则会替换,第二个不会替换。

//df注册成全局临时表
df.createOrReplaceGlobalTempView("user")
//或者
df.createGlobalTempView("user")
//查询全局临时表
spark.sql("select * from global_temp.user").show()
6、临时表和全局临时表的区别

        全局临时表( global temporary view) 于临时表( temporary view)是相对的, 全局临时表的作用范围是某个Spark应用程序内所有会话(SparkSession) , 它会持续存在, 在所有会话中共享, 直到该Spark应用程序终止。当然如果某个临时表只在整个应用中的某个session中需使用, 仅需注册为局部临时表, 避免不必要的在内存中存储全局临时表。

全局临时表与系统保留的数据库global_temp相关联, 引用时需用global_temp标识。临时表不需引用global_temp标识。

spark.sql("select * from global_temp.user").show()


 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/748729.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号