熟悉 Spark SQL 基本操作
启动
Spark shell
将下列
json
数据添加到
Linux
系统中,并保存命名为
example.json
。
{ "id":1 ,"name":" Ella","age":36 }
{ "id":2,"name":"Bob","age":29 }
{ "id":3 ,"name":"Jack","age":29 }
{ "id":4 ,"name":"Jim","age":28 }
{ "id":5 ,"name":"Damon" }
{ "id":5 ,"name":"Damon" }
首先为
employee.json
创建
DataFrame
,并写出
Scala 语句完成下列操作:创建 DataFrame
scala> import org.apache.spark.sql.SparkSession
![](https://i-blog.csdnimg.cn/blog_migrate/a80ee058e18c217b0450972c7e887cbc.png)
scala> val spark=SparkSession.builder().getOrCreate()
![](https://i-blog.csdnimg.cn/blog_migrate/6cf9ed0d13939b57d9e3458c990756bf.png)
scala> import spark.implicits._
![](https://i-blog.csdnimg.cn/blog_migrate/a9a07af8f6d51206962af88aab8ff6dd.png)
scala> val df = spark.read.json("file:///usr/local/spark/example.json")
![](https://i-blog.csdnimg.cn/blog_migrate/50b5bf39914dff7315f4fd5a85411852.png)
(1) 查询
DataFrame
的所有数据
scala> df.show()
(2) 查询所有数据,并去除重复的数据
scala> df.distinct().show()
![](https://i-blog.csdnimg.cn/blog_migrate/f55459f53abac3c0917321eb4bca87cb.png)
(3) 查询所有数据,打印时去除
id
字段
scala> df.drop("id").show()
![](https://i-blog.csdnimg.cn/blog_migrate/2a0ce33713a5ef9922ae4104324c23d2.png)
(4)
筛选
age>30
的记录
scala> df.filter(df("age") > 30 ).show()
![](https://i-blog.csdnimg.cn/blog_migrate/acfdbe91a55bb1ed87d58d8923b8a4dd.png)
(5) 将数据按
name
分组
scala> df.groupBy("name").count().show()
(6) 将数据按
name
升序排列
scala> df.sort(df("name").asc).show()
![](https://i-blog.csdnimg.cn/blog_migrate/b0a40589dec1c7b871a82ac775bbec9e.png)
(7) 取出前
3
行数据
scala> df.take(3)
或
scala> df.head(3)
![](https://i-blog.csdnimg.cn/blog_migrate/327c4f3911ff0cde4f6dcb8bcf0a215c.png)
(8)
查询所有记录的
name
列,并为其取别名为
username
scala> df.select(df("name").as("username")).show()
![](https://i-blog.csdnimg.cn/blog_migrate/11a0ea85e8d4c2aff457a462a140ec96.png)