Spark SQL 客户端查询

首先打开shell,会发现在bin目录下会有一个叫spark-sql,那除了用spark-sql外,还可以用

spark-shell,那它们有什么区别呢,spark-sql仅仅类似于hive客户端,只是支持sql查询,spark-shell

不仅可以支持sql查询,还可以执行RDD的一些操作,包括RDD和SparkSQL之间的转换。
在这里插入图片描述

接下来进入spark-shell里面,会有两个输出

第一个输出是 Spark context available as 'sc'

第二个输出是 Spark session available as 'spark' ,这个Spark session是进入sparkSQL的主入口。
在这里插入图片描述
接下来利用shell来读取一个文件

spark目录下有一个examples,里面有一个people.json

cd /home/groot/soft/spark/examples/src/main/resources

cat people.json

在这里插入图片描述

当我们进入spark-shell来读取一个文件时,会发生如下的错误:
在这里插入图片描述
为什么会出错呢?是应为我们读的是Hadoop的目录,那这个时候我们可以直接把这个people.json文

件传到hdfs上去。

hdfs dfs -put ./people.json /

hdfs dfs -ls /

在这里插入图片描述
传上去以后在执行:

val df = spark.read.json("/people.json")

在这里插入图片描述

那这个时候就读取成功了

接下来就可以查看各个函数的用法了

df.filter($"age" < 20).show

在这里插入图片描述

从上面的查询语句来看,它并不是sql查询,OK,在sql查询之前,首先把它注册成一张表
在这里插入图片描述

从上面可以看出,create分为两种类型,一类是有Global的TempView,一类是没有Global的

TempView,它们两种类型的区别就是:有Global的TempView是可以在多个session里面共同使用

的,而没有Global的TempView只有在当前session是有用的。

下面使用sql来实现:

df.createOrReplaceTempView("people")

在这里插入图片描述

通过以上两个小例子,可以看出在我们操作DataFrame的时候,有两种方式,一种方式是用类似于这

种链接式操作,通过它的一些操作算法、算子、转换这些方式来操作。另外一种方式是先把它注册成

一张表,然后通过sql查询进行操作。

总结:

1、你可以通过Spark-shell来操作Spark SQL,spark作为SparkSession的变量名

2、可以通过Spark提供的方法读取JSON文件,将JSON文件转换成DataFrame

3、可以通过DataFrame提供的API来操作DataFrame里面的数据

4、你可以通过将DataFrame注册成一个临时表的方式,来通过Spark-sql方法运行标准的SQL语句来

查询。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值